好吧,问候大家,我只是按照 zend Framework 2 示例代码创建相册管理应用程序(http://framework.zend.com/manual/2.0/en/user-guide/forms-and-actions.html)但在测试“添加”功能时遇到以下错误:
可捕获的致命错误:传递给 Zend\Form\Form::setInputFilter() 的参数 1 必须实现接口 Zend\InputFilter\InputFilterInterface,给定 null。
我一直在检查我的应用程序代码以尝试解决这个问题,但我只是看不出它出了什么问题,甚至最糟糕的是,搜索错误消息不会产生任何结果,这就是为什么我要重复您的知识尝试解决这个问题,这是我的代码:
SystemController.php
<?php
namespace System\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use System\Model\User;
use System\Form\UserRegisterForm;
Class SystemController extends AbstractActionController
{
protected $userTable;
public function indexAction()
{
return new ViewModel(array(
'system' => $this->getUserTable()->fetchAll(),
));
}
public function editAction()
{
}
public function deleteAction()
{
}
public function registerAction()
{
$form = new UserRegisterForm();
$form->get('submit')->setValue('Register');
$request = $this->getRequest();
if ($request->isPost()) {
$user = new User();
$form->setInputFilter($user->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) { …Run Code Online (Sandbox Code Playgroud) 我已经构建了一个包含用户个人资料的 ZF2 应用程序,现在我希望允许用户上传并显示他们的照片作为其个人资料的一部分。就像您在 LinkedIn 中看到的那样。
上传照片似乎很容易(使用Zend\InputFilter\FileInput())。我的那个工作得很好。
在我看来,将它们存储在网络根目录之外很有意义。(例如,我不需要担心用户在目录上使用 wget )。但是如何将这些图像嵌入到网页中呢?
如果它们位于网络根目录内,我会简单地执行此操作<img width="140" src="/img/filename.jpg">,但显然,如果它们位于安全位置,则这是不可能的。解决办法是什么?
我实现了一个ListenerAggregateInterface用于侦听dispatch(MvcEvent::EVENT_DISPATCH)事件的方法.
public function attach(EventManagerInterface $events) {
$this->listeners[] = $events->attach(
MvcEvent::EVENT_DISPATCH,
array($this, 'shortCircuit'),
101
);
$this->listeners[] = $events->attach(
MvcEvent::EVENT_DISPATCH,
array($this, 'listener1'),
33
);
$this->listeners[] = $events->attach(
MvcEvent::EVENT_DISPATCH,
array($this, 'listener2'),
33
);
}
Run Code Online (Sandbox Code Playgroud)
如果某些条件shortCiruit是true其余的听众应该被跳过.因此,我打电话ListenerAggregateInterface::detach删除所有听众.
public function shortCircuit(MvcEvent $e) {
if(condition) {
$this->detach($e->getApplication()->getEventManager());
}
}
Run Code Online (Sandbox Code Playgroud)
我原以为他们现在不再被执行,但事实并非如此.
我正在尝试根据从 Regex 路由获取的值加载不同的视图,但我无法让 ViewModel 加载模板
public function viewAction()
{
$page = $this->params()->fromRoute()["page"];
$view = new ViewModel();
$view->setTemplate('module/Base/view/base/index/$page');
return $view;
}
Run Code Online (Sandbox Code Playgroud)
我遵循传统的模块设置:
Base
|- config
| |- module.config.php
|- src
| |- Base
| |- Controller
| |- IndexController.php
|- view
|- base
| |- index
| |- index.phtml
| |- other.phtml
|- layout
Run Code Online (Sandbox Code Playgroud)
我的 view_manager 配置是:
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array(
'layout/layout' => __DIR__ …Run Code Online (Sandbox Code Playgroud) 我正在使用这个XML到Json Zend模块.
问题是我可以从我连接的Web服务中收到格式错误的XML字符串.在fromXml Zend方法处理此XML时,它会抛出警告.
所以我想在调用fromXml函数之前验证XML .我怎么知道XML是否有效?优先使用Zend?
我尝试使用如下代码,但我还没有成功:(这个XML字符串在使用fromXml时有效)
<?php
$xml1 = 'asdf';
$xml2 = '<?xml version="1.0" encoding="iso-8859-1" ?>
<sroxml>
<version>1.0</version>
<quantity>1</quantity>
<SearchType>Objetcs List</SearchType>
<ResultType>All events</ResultType>
<object>
<number>AA299100299BB</number>
<event>
<type>BDI</type>
<status>01</status>
<date>07/01/2013</date>
<hour>12:12</hour>
<description>Received</description>
<receiver>MARY WILLIAN </receiver>
<document>AA. 111639676 </document>
<comment> </comment>
<local>Some local</local>
<code>11151970</code>
<city>Some City</city>
<uf>AB</uf>
<sto>11102272</sto>
</event>
</object>
</sroxml>';
$validator = new DOMDocument();
$validator->loadXML($xml2, LIBXML_DTDLOAD|LIBXML_DTDVALID|LIBXML_ERR_WARNING |LIBXML_DTDATTR);
echo "<br>testing<pre>"; var_dump($validator->validate()); echo "</pre><br>";
Run Code Online (Sandbox Code Playgroud) 是否可以通过classmap和autoloader覆盖框架类的类文件位置?如果是,那怎么样?
示例:我想覆盖Zend\Form\Fieldset,以便在框架中引用Zend\Form\Fieldset的任何地方,我希望它使用我自己的类文件而不是原始文件.
动机:更新框架时,我希望保护我的修改不被覆盖.
已知替代方案:修改框架中的代码.缺点:更新框架时修改会丢失.
我正在用PHP开始一个新项目,并希望选择最新的ZendFramework.我看到Zend Framework 3已经发布,所以我想从Zend Framework 3开始.但是当我进入Zend 的INSTALL页面时,他们给出了Zend MVC和Zend表达的选项.
我阅读了它们,并了解到Expressive是一个微框架,而MVC是一个全栈框架.除此之外,我对它们并不十分清楚.
我看到Zend MVC也适用于ZF2,文档说MVC是一个层.虽然我找不到Expressive for zf2.
题:
zend-http,zend-json等,所以在这些(表现力和MVC)只是建在不同的Zend组件?php zend-framework zend-framework2 zend-framework3 zend-expressive
我需要在代码中获取大量数据.我正在使用zf2,目前我正在使用Doctrine2来处理我的数据库.但我发现ORM查询比普通的mysql查询花费了很多时间.那么请你建议我在zf2中从数据库中获取大量数据的最佳方法.