这与DI和Zend框架有关.我的问题是在哪里使用DI容器.是否应该只使用durring bootstrap进行初始化,让应用程序的其余部分不知道存在?或者,如果需要,将它传递给控制器,模型,帮助器等是否是好的做法?Zend 2怎么样?
我似乎无法在新的Zend Framework 2.0.2上找到任何YouTube API文档.我需要做任何外部或额外的下载吗?所有教程都基于旧版本的Zend!
或者我应该只下载旧版本的Zend?
我正在为将来可能需要它的其他人提供这个答案.
您将不得不下载Zend Framework 1.7.7.由于YouTube API使用Gdata文件夹.在我的研究中,这是唯一支持YouTube API的版本.
希望这有助于某人.
我有一个路由器test/view,我想通过一些类似的test/view/id/123.
我不知道如何在zf2路由器中添加这些参数.
'router' => array(
'routes' => array(
'test' => array(
'type' => 'Literal',
'options' => array(
'route' => '/test',
'defaults' => array(
'__NAMESPACE__' => 'test\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'view' => array(
'type' => 'Literal',
'options' => array(
'route' => '/view',
'defaults' => array(
'controller' => 'Index',
'action' => 'view',
),
),
),
),
),
),
),
Run Code Online (Sandbox Code Playgroud)
我设置view为儿童路线,但不知道在哪里添加这些参数.
我试过'route' => '/view/:id/:value'和 …
该手册的示例显示了如何仅为某些特定设置basePath viewModel:
$this->getHelper('basePath')->setBasePath()
Run Code Online (Sandbox Code Playgroud)
但我想在一个地方设置它,然后它在任何viewModel我在任何控制器中创建的都是相同的.我该怎么做?
我是Zend2的新手.我不知道如何破坏特定的会话.
$check_username = $session->offsetExists('sess_chk_usr_name');
if(empty($check_username))
{
$session->offsetSet('sess_chk_usr_name', 'test user');
}
Run Code Online (Sandbox Code Playgroud)
我需要删除会话sess_chk_usr_name,请帮忙.
如何链接控制器中的文件
$OpenuUserPersonalFile = fopen("/ZendEbayApp/data/usersinformationin/userPersonal.txt", "r");
echo fgets($OpenuUserPersonalFile) . "<br />";
fclose($OpenuUserPersonalFile);
Run Code Online (Sandbox Code Playgroud)
这会是正确的吗?
这是我如何链接我的布局中的文件 /ZendEbayApp/public/css/MainPageLayout.css
这是我的控制器所在的位置: \ZendEbayApp\module\Application\src\Application\Controller
我在使用zf2查找资源时遇到了一些困难(如在实际教程中).Zend官方网站还可以,但不是很棒.我通过示例更好地学习,并且入门专辑教程仅包含少量内容.我找到了ZF1的大量东西.
使用搜索引擎很容易找到zf1的教程,但简单地说"Zend framework 2"显然只会为你提供Zend Framework 1的所有结果以及文章中包含的任何其他特定"2",例如,"第2章"或"2评论".
因此,我的主要问题是:
是否可以按照旧框架的教程进行操作?具体来说,我正在考虑"幸存深渊"和类似的书籍.在尝试将它们应用于zf2时,这些指南是否会导致混淆?
我正在使用ZendSkeletonApplication,我有这个目录:
/home/mydir/vendor/My/library/My/Helper
Run Code Online (Sandbox Code Playgroud)
其中包含ff.php(分别/home/mydir/vendor/My/library/My/Helper/ff.php)
我的代码在ff.php:
<?php
namespace My\Helper;
class FF {
public function test() {
echo "success !";
}
}
Run Code Online (Sandbox Code Playgroud)
而我的控制器:
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use My\Helper\FF;
class IndexController extends AbstractActionController
{
public function indexAction()
{
FF::test();
return new ViewModel();
}
}
Run Code Online (Sandbox Code Playgroud)
我的module.php:
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
'My' => __DIR__ . '/../vendor/My/library/My'
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:Fatal error: …
在我的zend框架2项目中,我更喜欢双层模型(mapper和model)而不是学说,并试图使它们像doctrine一样工作,所以我可以从模型(实体)访问关系数据.以下示例演示了我想要实现的目标.
class User
{
protected $userTable;
public $id;
public $name;
public function __construct($userTable)
{
$this->userTable = $userTable
}
public function getUserArticles()
{
return $this->userTable->getUserArticles($this->id);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我不能在我的用户模型中注入我的用户表,因为表网关使用模型类作为数组对象原型,后来被注入以创建用户表网关(映射器).
我不想在我的模型中注入服务管理器,因为它被认为是一种不好的做法.如何在用户模型中注入用户表?可能吗?什么是实现我想要做的最好的方法
我正在尝试在ZF2应用程序中实现身份验证模块,我完全按照我在官方文档中找到的那样,但我收到此错误:
Fatal error: Call to undefined method DoctrineModule\Authentication\Adapter\ObjectRepository::setIdentityValue() in DOCROOT/module/Login/src/Login/Controller/IndexController.php on line 33
Run Code Online (Sandbox Code Playgroud)
我把它放在我的module.config.php中:
'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
),
'orm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
)
)
),
'authentication' => array(
'orm_default' => array(
'object_manager' => 'Doctrine\ORM\EntityManager',
'identity_class' => 'Login\Entity\User',
'identity_property' => 'email',
'credential_property' => 'password',
),
),
)
Run Code Online (Sandbox Code Playgroud)
在我的module.php中:
public …Run Code Online (Sandbox Code Playgroud)