我有一个扩展的Acl插件Zend_Controller_Plugin_Abstract
,这个插件处理我所有的Acl代码.
我想在这个插件中抛出一个Exception,例如Exception_Unauthorised
,然后在我的处理中ErrorController
,这样我就可以为不同的应用程序使用相同的Acl插件,并使用它ErrorController
来处理每个应用程序中的每个情况 - 如果需要的话.
问题是在插件中抛出异常并不会阻止原始Action执行.所以我最终得到了原始的Action输出和ErrorController
输出.
如何在插件中抛出异常以阻止原始Action发生?
情况1
// This throws the `Exception_NoPermissions`, but it does not get caught by
// `ErrorController`
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
parent::preDispatch($request);
throw new Exception_NoPermissions("incorrect permissions");
}
Run Code Online (Sandbox Code Playgroud)
案例2
// This behaves as expected and allows me to catch my Exception
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
parent::preDispatch($request);
try
{
throw new Exception_NoPermissions("incorrect permissions");
}
catch(Exception_NoPermissions $e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
案例3
我认为这是问题所在,通过更改控制器.
public function preDispatch(Zend_Controller_Request_Abstract $request)
{ …
Run Code Online (Sandbox Code Playgroud) 我一直在谷歌和其他各种网站上寻找这个问题的答案几个小时没有运气.我使用PHPUnit为Zend Framework项目创建了一些单元测试.一切顺利,直到PHPUnit代码覆盖率报告的测试为止.此时我收到以下错误:
生成代码覆盖率报告,这可能需要一些时间.致命错误:在第32行的C:\ htdocs\ZendFWTutorials\ZendStorefront\library\SF\Plugin\Action.php中的非对象上调用成员函数pushStack()
此错误引用以下代码块:
public function
dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
$stack = $this->getStack();
// category menu
$categoryRequest = new Zend_Controller_Request_Simple();
$categoryRequest->setControllerName('category')
->setActionName('index')
->setParam('responseSegment', 'categoryMain');
// push requests into the stack
$stack->pushStack($categoryRequest);
}
public function getStack()
{
if (null === $this->_stack) {
$front = Zend_Controller_Front::getInstance();
if (!$front->hasPlugin('Zend_Controller_Plugin_ActionStack'))
{
$stack = new Zend_Controller_Plugin_ActionStack();
$front->registerPlugin($stack);
} else {
$stack = $front->getPlugin('ActionStack');
}
$this->_stack = $stack;
}
return $this->_stack;
}
Run Code Online (Sandbox Code Playgroud)
这段代码来自我没有编写的库,因此可能会增加我的问题的复杂性,因为我不太可能理解发生了什么.我还不知道PHPUnit逻辑在创建代码覆盖率报告时正在做什么,所以我不知道如何解决问题.这个问题只发生在我运行PHPUnit并运行xdebug以在正常操作条件下跟踪此函数中的代码时.我有一种感觉,PHPUnit进入一个变量为null但在正常操作中$ stack和$ categoryRequest不为空的情况.
我的目录结构如下:
application
-----> bootstrap
-----> config
-----> layouts
-----> modules
--------> …
我是处理大量数据的新手。我想知道批量查询数据库时是否有任何最佳实践,或者是否有人可以提供任何建议。
我有一个查询将提取所有数据,并使用 PHP 将数据写入 XML 文件。数据可能在 10 到 500,000 行之间,因此我编写了脚本以 50 行为一组提取数据,写入文件,然后获取接下来的 50 行,将其附加到文件等。这样可以吗?或者我应该做点别的事情?我可以增加批处理大小还是应该减少它以使脚本运行得更快?
任何建议将不胜感激。
我正在使用以下代码清除网站的主页:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.mysite.com:8080/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PURGE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
$r = curl_exec($ch);
echo "<PRE>$r</PRE>";
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
Varnish 的响应符合预期:
HTTP/1.1 200 Purged.
Server: Varnish
Content-Type: text/html; charset=utf-8
Retry-After: 5
Content-Length: 382
Accept-Ranges: bytes
Date: Fri, 10 Aug 2012 10:50:56 GMT
X-Varnish: 617777456
Age: 0
Via: 1.1 varnish
Connection: close
X-Cache: MISS
Run Code Online (Sandbox Code Playgroud)
所以现在我认为它被清除了,但是进一步调用页面以检查标题表明它没有被清除。AsAge: 15
和X-Cache: HIT
都设置了,这表明该页面仍在缓存中并且已经存在 15 秒。
TTL 为 120。
我错过了什么吗?
谢谢杰克
在Symfony 2中是否存在部分内容,从任何地方都可以重复使用模板?
我找到了include
http://twig.sensiolabs.org/doc/tags/include.html,但这只允许在特定的目录结构中呈现模板.
我真的想要一个包含所有部分模板的文件夹,而不是将它们集中到我的主视图中?
所以我希望能够做类似的事情
{% include "Bundle:Default:Partials:view.html.twig" %}
Run Code Online (Sandbox Code Playgroud)
更新
我不想使用强制结构Bundle:Controller:Template
结构.我不想使用它,因为它意味着将我的所有模板部分放入我的主视图模板中.我需要能让我这样做的东西Bundle:Controller:PartialDir:Template
当我$scope
在控制器中更新我的喜欢时
$scope.item = "Hello";
Run Code Online (Sandbox Code Playgroud)
然后整个DOM item
似乎被删除,然后再次添加.这似乎很好,但如果我有一个列表items
和做
$scope.items = Resource.query();
Run Code Online (Sandbox Code Playgroud)
要更新所有项目,然后items
删除所有DOM ,然后重新添加,这看起来很破碎和笨拙 - 无论如何还有这个删除,然后在$scope
更新时添加DOM元素?
如果将$scope.items
其子项用于多个ng-repeat
语句中,因为所有这些ng-repeat
部分都被删除然后重新添加,则此问题会进一步恶化.
编辑
我已经读过这个并觉得这是问题https://www.binpress.com/tutorial/speeding-up-angular-js-with-simple-optimizations/135
我有这么多"东西"进行的$digest
只是缓慢.我正在研究一个例子,但同时想象一下这个数据的尝试
{
{
id: 1,
name: "name1",
something: {
id: 10,
name: "something10"
else: {
id: 15,
name: "else15"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是有20个这样的对象都有嵌套对象 - 这似乎是个问题.有很多对象被解析并绑定到DOM,$watchers
只需要很长时间就可以完成所有事情.
编辑2
我做了这个演示,也许我使用资源错了?http://plnkr.co/edit/QOickL0Dyi8jmuvG9mzN
但是这些物品每5秒更换一次,更换后它们全部消失然后重新出现.这是我遇到的问题.
我有这个对象数组
[ { id: '573267d06b2957ab24c54d59' },
{ id: '573267d06b2957ab24c54d5a' },
{ id: '573267d06b2957ab24c54d5b' },
{ id: '573267d06b2957ab24c54d5c' },
{ id: '573267d06b2957ab24c54d5d' }
]
Run Code Online (Sandbox Code Playgroud)
我希望在 NodeJs 中将其转换为以下内容
[ '573267d06b2957ab24c54d59',
'573267d06b2957ab24c54d5a',
'573267d06b2957ab24c54d5b',
'573267d06b2957ab24c54d5c',
'573267d06b2957ab24c54d5d'
]
Run Code Online (Sandbox Code Playgroud)
考虑到正确的库/包,这似乎应该很容易,但我正在努力寻找正确的措辞将数组“展平”为包含对象的 ID。
按照此
http://symfony.com/doc/current/security/custom_authentication_provider.html
结果是
服务“security.authentication.provider.wsse.wsse_secured”:如果尚未配置参数,则无法替换参数。
我在任何地方都找不到有关此错误的任何信息。这使用了文档的 WSSE 代码,但它失败了。
这个 repo 显示它失败了https://github.com/jakenoble/wsse_test
我想让它最终与 FOS 用户包一起工作。但是我不能让它与基本的 Symfony3 安装一起工作,所以 FOS User Bundle 目前是不可能的。
挖了一点...
有在元件的一个ARGindex_0
上类Symfony\Component\DependencyInjection\ChildDefinition
在元件为arg的对象index_0
具有一个id fos_user.user_provider.username_email
。
然后替换调用尝试获取 的参数fos_user.user_provider.username_email
,但没有。然后出现错误。
有任何想法吗?
这是我的第一个Windows问题,如果这是明显的或措辞不好,请道歉.
我有一个触摸屏工作站在Kisokmode(http://www.opera.com/support/mastering/kiosk/)运行Opera,它很棒,工作得很好.
我希望能够监视Opera进程并在崩溃或关闭时重新启动它.
任何人都可以就如何做到这一点给我一些指导,或者是否有任何开箱即用的软件可以为我做到这一点?
我一直试图解决这个问题
http://symfony.com/doc/current/service_container/factories.html
但是似乎有一块缺失让所有人都厌倦了或者我完全忽略了这一点.
该示例具有工厂类
class NewsletterManagerFactory
{
public static function createNewsletterManager()
{
$newsletterManager = new NewsletterManager();
// ...
return $newsletterManager;
}
}
Run Code Online (Sandbox Code Playgroud)
然后通过服务将该工厂配置为工厂类和NewsletterManager
服务方法.
services:
app.newsletter_manager_factory:
class: AppBundle\Email\NewsletterManagerFactory
app.newsletter_manager:
class: AppBundle\Email\NewsletterManager
factory: 'app.newsletter_manager_factory:createNewsletterManager'
Run Code Online (Sandbox Code Playgroud)
所以现在我们有一个通过param NewsletterManager
知道NewsletterManagerFactory
Class的Classfactory:
services.yml
题
你如何利用这种配置?现在暴露在内的NewsletterManager
是什么让我可以createNewsletterManager
在工厂上课?
据我所知,这两项服务仍然是完全分开的?