我知道这个问题可能在这里和互联网上出现过几次.但我仍然觉得有人想要进入框架世界并不清楚.我已经按照这些链接Rob Allens Tutorial,ZF Quick Tutorial.
但有些我觉得安装部分不太清楚.我的Windows系统基本上是Vista,安装了最新版本的XAMPP.我从这个链接ZFSkeletonApp下载了最新版本的ZFSkeletonApplication ,提取了骨架内容,将文件夹重命名为zendframework并将其移动到xampp文件夹,即现在ZF骨架在c:\ xampp\zendframework中.
所以直到这里一切看起来都清晰简单,从这里我可以看出配置如何丢失.有人可以从这里详细说明如何安装Zf并使其工作,如包含路径,.htaccess文件等的更改.请记住,我有带XAMPP的窗户.如果有人可以指导我完成这个设置,那将会很有帮助.
PS如果能够通过路径组成的示例提供有关我需要做出的更改的信息会很好,这样我就不会丢失,例如你可以在这里找到.htaccess文件(ex pathname),更改.htaccess文件应该是这样的.
谢谢
当我使用composer更新zf-commons/zfc-admin时,它会给出一个RuntimeException错误
[RuntimeException]
/var/www/site2.com/vendor/zf-commons/zfc
-admin中缺少.git目录,有关详细信息,请参阅http://getcomposer.org/commit-deps
由于此错误,我无法更新框架中的任何其他模块.
我正在努力禁用ZF2中的视图$this->_helper->viewRenderer->setNoRender(); or (true)而没有运气,因为它总是在那里说
PHP Fatal error: Call to a member function setNoRender() on a non-object in ../module/Location/src/Location/Controller/LocationController.php on line 190
Run Code Online (Sandbox Code Playgroud) 一些zf2模块具有用于分发诸如js/css/images之类的资源的公共目录.将这些资源提供给应用程序的最佳做法是什么?
我希望这些资源可以自动获得http://mysite.com/[moduleName]/.例如,
root/public/js/sitescript.js - > http:\\mysite.com\js\sitescript.js
root/module/mymodule/public/js/modulescript.js - > http:\\mysite.com\mymodule\js\modulescript.js
root/vendor/vendormodule/public/js/vendorscript.js - > http:\\mysite.com\vendormodule\js\vendorscript.js
是否应将这些资源复制到root/public目录?手动复制将是痛苦的,我怀疑合并目录的自动构建过程也非常实用.
也许有一些魔法可以使用httpd.conf或.htaccess?
符号链接也许是解决方案吗?但是,符号链接并不是直接在Windows平台上运行,并且需要为每个单独的模块手动创建.
我对这个Manager和Service类名后缀感到有些困惑.
据我了解的不同,Managers负责处理(创建,检索,删除......)某些类型的实体.例如,ModuleManager负责加载和返回Modules.在这种情况下,你确实关心实际的实体,Module.
但是,Services是提供接口来执行cetain类型的流程逻辑的类.例如,a LogService将给定的日志消息发送到定义的日志编写器.你不关心它在哪里以及它做了什么,你只是想让管理员了解刚刚发生的事情.
现在,ZF2提供了一个ServiceManager创建并返回给定实例的实例Service.我不小心习惯于创建Managers并提供一个factory,ServiceManager以便您可以在上下文中访问Manager使用,以便保持控制器的微小和可测试类中的真实逻辑.这是令我困惑的部分,因为很明显,不建议使用a 来检索.但是:我不是唯一一个这样做的人:模块是另一个例子:它默认注册为a .$this->getServiceLocator()->get('managerName');ControllerManagersServiceLocatorDoctrine ORMEntityManagerdoctrine.entitymanager.orm_default Service
我是否得到了真正的区别Services和Managers错误?甚至还有区别吗?是Managers没有可能从继承Services的概念?
到目前为止,我已经想通了如何返回Zend框架2.首先一个典型的JSON响应,我加入ViewJsonStrategy到strategies了部分view_manager配置.然后,ViewModel我返回一个JsonModel设置了所有变量的实例,而不是从控制器操作返回一个实例.
既然我已经想到了这一点,我需要了解如何渲染视图并在JSON响应中返回它.在ZF1中,我能够使用$this->view->render($scriptName),它将HTML作为字符串返回.在ZF2中,该Zend\View\View::render(...)方法返回void.
那么......我如何渲染HTML视图脚本并在一个请求中以JSON响应返回它?
这就是我现在所拥有的:
if ($this->getRequest()->isXmlHttpRequest()) {
$jsonModel = new JsonModel(...);
/* @todo Render HTML script into `$html` variable, and add to `JsonModel` */
return $jsonModel;
} else {
return new ViewModel(...);
}
Run Code Online (Sandbox Code Playgroud) 我已经使用PHP了很长一段时间,但从未成为高级程序员.我觉得这是一个愚蠢的问题,但从来没有理解为什么可以使用不同的方法检索一些数组值:
这个:
$array->value
Run Code Online (Sandbox Code Playgroud)
而不是正常的:
$array['value']
Run Code Online (Sandbox Code Playgroud)
标准的$ array ['value']总是有效,但是使用 - >方法的那个有时没有.这是为什么?
这是一个例子.我正在使用Zend Framework 2,我可以使用 - >方法获取会话值:
$this->session->some_value
Run Code Online (Sandbox Code Playgroud)
但是,如果我做一个新的,正常的数组,我不能:
$array = array('some_value' => 'myvalue');
$array['some_value']; // works!!
$array->some_value; // does not work :(
Run Code Online (Sandbox Code Playgroud)
在Zend Framework 1中,大多数数组都可以这样工作,而且在ZF2中越来越多,我遇到的问题是我需要改变我获得该值的方式.这有意义吗?我当然感谢任何帮助.谢谢,格雷格
我最近开始使用Zendframework 2构建应用程序,我在ZF1方面有很好的经验,我在ZF2面临的主要问题是会话.
这是我创建会话容器的方式.
use Zend\Session\Container;
Run Code Online (Sandbox Code Playgroud)
//会话容器创建:(以前我们将其称为命名空间)
$session_user = new Container('user');
$session_user_errors = new Container('usererrors');
$session_user_shares = new Container('usershares');
Run Code Online (Sandbox Code Playgroud)
现在像这样我有几个容器,
我可以清除这样一个特定容器的钥匙
//通过键从会话中获取值:(从命名空间获取值)
$email = $session_user->offsetGet('email');
Run Code Online (Sandbox Code Playgroud)
//在会话中设置值:(从命名空间设置值)
$session_user->offsetSet('username', 'abcd');
Run Code Online (Sandbox Code Playgroud)
现在我的问题是清除在我的应用程序的几个级别设置的整个容器.
如果我尝试下面的代码它清除我的所有会话容器.
$session_user = new Container('user');
$session_user->getManager()->getStorage()->clear();
Run Code Online (Sandbox Code Playgroud)
我想只清除一个名为'user'的容器,它有很多键(我不知道最后会有什么).有没有办法实现这一目标
我知道我可以在每个键上做offsetunset但这不是我觉得的最佳解决方案.
如果有任何替代方法可以清除特定的会话容器,请建议.
注意: -我没有使用任何第三方模块,如ZfcUser和Akrabat会话
在此先感谢您回复此帖子.
我的公司想要采用PHP框架,我被要求决定使用哪一个.
我们的要求很简单
使用上述标准,我找到了我喜欢的框架
我想使用Laravel,但上面的第2点关注我,因为它真的由一个人驱动,即使有强大的社区,一个人仍然有太强大的影响力而不像Drupal,如果Dries离开社区将不会崩溃,我觉得如果泰勒去,那么Laravel会摔倒.尽管我喜欢它,但我不想把我的公司绑在那辆马车上.
这个问题不是关于哪个框架更好,而是如何最好地决定为贵公司选择框架
zend-framework2 ×10
php ×7
arrays ×1
composer-php ×1
git ×1
json ×1
laravel-4 ×1
mysql ×1
symfony ×1
transactions ×1
windows ×1
xampp ×1
zend-db ×1
zend-session ×1