这应该很简单,我一直在谷歌搜索,但我一直在提出"路线"相关的建议.
我只想执行重定向到同一页面并修改其中一个查询字符串参数(清除一个或设置一个).
我无法在任何地方看到如何做到这一点.
一个选项可能是手动完全生成URL并使用此猜测,但这似乎不是一个非常好的方法:
$this->router->generate("http://domain.com?a=1")
Run Code Online (Sandbox Code Playgroud) 我这样做:
domain.com/route-name/?do-something=1
Run Code Online (Sandbox Code Playgroud)
..which设置一个cookie,然后使用302重定向重定向到这个:
domain.com/route-name/
Run Code Online (Sandbox Code Playgroud)
它允许在不管页面查看的情况下进行操作(cookie存储用户的设置).
我使用默认的Symfony2反向代理缓存,一切都很好,但我需要阻止上述请求缓存.
我正在使用它来执行重定向:
// $event being a listener, usually a request listener
$response = new RedirectResponse($url, 302);
$this->event->setResponse($response);
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情,但似乎没有任何效果:
$response->setCache(array('max_age' => 0));
header("Cache-Control: no-cache");
Run Code Online (Sandbox Code Playgroud)
那么如何阻止它缓存这些页面呢?
以下所有示例都基于所有文件都存在于正确位置的保证.我高音检查过这个.
(1)这在不使用命名空间时有效:
$a = "ClassName";
$b = new $a();
Run Code Online (Sandbox Code Playgroud)
这不起作用:
// 'class not found' error, even though file is there
namespace path\to\here;
$a = "ClassName";
$b = new $a();
Run Code Online (Sandbox Code Playgroud)
这个工作:
namespace path\to\here;
$a = "path\to\here\ClassName";
$b = new $a();
Run Code Online (Sandbox Code Playgroud)
因此,当使用变量实例化类时,似乎忽略了名称空间声明.
有没有更好的方法(比我上一个例子)所以我不需要经历一些代码并更改每个变量以包含命名空间?
我找不到任何关于如何使用Symfony2配置APC的文档.我不想编写任何特定代码或有任何高级代码,只需使用Symfony2进行基本的APC设置.
我已经取消注释了app.php中的两行,一切似乎都没问题(该网站开始运行).
然而...
(1)我听到人们谈论"重启APC" - 这是什么意思?我是否可以在任何想要完全清洁的时候运行它:
php console cache:clear --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)
(2)在app/config_prod.yml中,我看到了这个:
framework:
router:
strict_requirements: null
#validation:
# cache: apc
Run Code Online (Sandbox Code Playgroud)
......那有什么作用呢?
在app.php中取消注释这两行似乎太容易了.必须有更多的配置选项.我再次不想要高级设置.
我甚至不知道APC是否正在运行,但考虑到网站运行告诉我它(在它之前没有,我需要在PHP中安装APC).
当我在Symfony2食谱中搜索"APC"时,它几乎没有返回.
我必须遗漏一些非常明显的东西,但我很难做到这一点.
我想在我的本地计算机上复制'master'repo并创建我自己的分支'copy-of-master',然后将其上传到GitHub(没有任何更改).
我希望能够在GitHub上看到这个新的'master-of-master'分支与master相同,没有其他人会使用,所以我只需上传更改而无需触及master.
其他人会照顾以后将其合并为"主人".
为了增加混淆,我在命令行上使用了PhpStorm和Git的组合.
这就是我所做的,以及为什么我无法理解PhpStorm在做什么:
现在,我当然只是'推'到回购,应该有我的分支.
问题是我在PhpStorm中尝试了这个问题,它提出了这个问题:
没有跟踪分支.使用下面的复选框将分支推送到手动指定,显示5个最近的提交
然后它显示了5次随机提交已经完成了多次.
此外,它在底部显示了一个选项"将当前分支推送到备用分支",但另一个分支是我已经在的分支(??).
我之前使用过PhpStorm Push,它总是自动将我的工作合并到主分支中.这次我不想弄乱任何东西.
根本没有其他人正在处理回购.
我需要编写一个简单的查询:SELECT propertyName from TABLE_NAME WHERE abc > 10
我相信我不能用简单的 $repository->findBy() 做到这一点,所以相信 DQL(或查询构建器)可以完成这项工作。像这样的东西:
$query = $this->createQueryBuilder('x')
->where('x.abc > :amt')
->setParameter('amt', 10)
->getQuery();
$query->getResult();
Run Code Online (Sandbox Code Playgroud)
但是,我听说 Doctrine 2.3 中提供的 Doctrine "Criteria" 是一种更好的方法。
(1) 我看到的文档很少,但 DQL 的推广仍然最多。有人可以给我一个非常简单的代码示例,与我上面的代码示例相同(但使用 Criteria)?
(2) 缓存呢?我知道我可以用 DQL 做到这一点,但是 Criteria 呢?
$query->useResultCache('cache_id');
Run Code Online (Sandbox Code Playgroud) {% set var_name1 = "hello" %}
{% set var_name2 = "there" %}
{% array1|merge({var_name1: var_name2}) %}
Run Code Online (Sandbox Code Playgroud)
我希望上面的代码将这个添加到array1:
hello:there
Run Code Online (Sandbox Code Playgroud)
......但它补充说:
var_name1:there
Run Code Online (Sandbox Code Playgroud)
我试过在var_name1周围包装{{}}.是否可以将记录添加到数组并使用变量作为键?
我正在使用FOSUserBundle.这两者有什么区别?
$this->get('fos_user.user_manager');
Run Code Online (Sandbox Code Playgroud)
...和...
$this->getUser();
Run Code Online (Sandbox Code Playgroud)
我发现我在不同的时间使用了上述两种方法,一切正常.
我猜第一个是来自FOS,第二个是默认的,但我猜我应该总是使用同一个.
这是我用过的一段代码:
$user = $this->getUser();
if($user) {
$email = $user->getEmail();
} else {
$email = "no email";
}
Run Code Online (Sandbox Code Playgroud)
..另一个......
$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserBy(array('memberID' => '123'));
Run Code Online (Sandbox Code Playgroud)
...所以我应该为两者使用相同的方法吗?
我很接近,但似乎没有任何效果:
{% set a %}abc{% endset %}
{% set b %}123{% endset %}
{{ "test_abc123_xyz"|replace({ '{{ a }}{{ b }}': '' }) }}
Run Code Online (Sandbox Code Playgroud)
应该明白我正在尝试做什么,因为我认为上面唯一的错误是这一点:
'{{ a }}{{ b }}'
Run Code Online (Sandbox Code Playgroud)
...但我无法正确使用(我想将a和b的值一起使用并替换它).
如果工作,上面的结果将是:
test__xyz
Run Code Online (Sandbox Code Playgroud) 场景:有人只知道设计,CSS,HTML等,你希望那个人在网站上工作.该网站的文件在GitHub上.
理想情况下,你对他们说,"克隆来自GitHub的回购并设置你的本地测试环境等,做你的工作和推/拉请求等."
但是要建立一个本地环境,例如包括MySQL以便开发环境能够正常运行,意味着他们需要了解后端技术.这是否意味着他们需要了解如何配置每个(或大多数)PHP框架+ Ruby on Rails等.它会停在哪里?
那么,前端开发人员将如何在此基础上工作呢?
前端开发人员是否可以在不知道如何配置Symfony2的情况下在Symfony2站点上工作?
symfony ×8
php ×3
twig ×2
apc ×1
css ×1
doctrine ×1
doctrine-orm ×1
git ×1
github ×1
html ×1
namespaces ×1
phpstorm ×1
web-frontend ×1