标签: zend-framework-mvc

Zend框架:控制器插件与动作助手

有人可能会提供一些技巧和/或示例控制器插件和动作助手是如何不同的?是否存在可以用一个而不是另一个完成特定任务的情况?对我来说,他们看起来或多或少都是一样的,我经常无法决定何时使用什么......有什么大不同之处吗?

zend-framework zend-framework-mvc

26
推荐指数
3
解决办法
7810
查看次数

ZF2:在控制器中获取url参数

我已经体验过Zend Framework 1,并且我已经使用该框架构建了一些应用程序.

现在,我正在试验Zend Framework 2,但我坚持使用url参数.我设置了这样的路由:

// Setup for router and routes
'Zend\Mvc\Router\RouteStack' => array(
    'parameters' => array(
        'routes' => array(
            'default' => array(
                'type'    => 'Zend\Mvc\Router\Http\Segment',
                'options' => array(
                    'route'    => '/[:slug]',
                    'constraints' => array(
                    'slug' => '[a-zA-Z][a-zA-Z0-9_\/-]*'
                    ),
                'defaults' => array(
                    'controller' => 'Htmlsite\Controller\BootController',
                    'action'     => 'index',
                    'slug' => 'home'
                    ),
                ),
            ),
        'home' => array(
            'type' => 'Zend\Mvc\Router\Http\Literal',
            'options' => array(
                'route'    => '/',
                'defaults' => array(
                    'controller' => 'Htmlsite\Controller\BootController',
                    'action'     => 'index',
                    ),
                ),
            ),
        ), …
Run Code Online (Sandbox Code Playgroud)

php zend-framework-mvc zend-framework2

25
推荐指数
4
解决办法
6万
查看次数

如何在JSON响应中呈现ZF2视图?

到目前为止,我已经想通了如何返回Zend框架2.首先一个典型的JSON响应,我加入ViewJsonStrategystrategies了部分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 json zend-framework-mvc zend-framework2

20
推荐指数
2
解决办法
3万
查看次数

ZF2 - 将控制器名称放入布局/视图中

我知道使用ZF1,您将使用自定义View Helpers检索模块/控制器名称,这将获得单例frontController对象并获取其名称.

使用ZF2,因为他们已经废除了很多框架的单独性质,并引入了DI,我为这个模块中的所有控制器指定了别名...我可以想象我会通过访问DI或者注入当前名称进入布局.

任何人都知道你会怎么做.我想有一百种不同的方法,但在嗅了几个小时的代码后,我无法弄清楚它现在应该如何完成.

我想要控制器名称的原因是将它作为特定控制器样式的类添加到主体.

谢谢,Dom

php zend-framework zend-framework-mvc zend-framework2

16
推荐指数
3
解决办法
3万
查看次数

如何编写在主体中具有锚标签的Zend Framework URL?

使用Zend Framework中设置的标准MVC,我希望能够显示具有锚点的页面.现在我只是在.phtml文件中添加一个我想要的'#anchor'的无意义参数.

<?= $this->url(array(
    'controller'=>'my.controller',
    'action'=>'my.action',
    'anchor'=>'#myanchor'
));
Run Code Online (Sandbox Code Playgroud)

这将URL设置为/my.controller/my.action/anchor/#myanchor

有没有更好的方法来实现这一目标?导航到锚链接后,额外的项参数将在用户的URL中设置,这是我不想发生的事情.

php zend-framework zend-framework-mvc

11
推荐指数
3
解决办法
9578
查看次数

ZF2:如何将参数传递给转发插件,然后我可以将它转发给我转发的方法?

我在Foo Controller中有一个Action方法,它需要参数:

public function fooAction($one, $two) {
    $a = one;
    $b = $two;
}
Run Code Online (Sandbox Code Playgroud)

我需要从一些Boo Controller 的其他方法转发到该方法.其中一个参数必须是参考参数.手册的唯一例子是:

$result = $this->forward()->dispatch('Boo\Controller\Boo', array('action' => 'boo'));
Run Code Online (Sandbox Code Playgroud)

没有任何其他参数.但他们写道:

$ params是一个可选的参数数组,用于查看此特定请求的RouteMatch对象.

所以,我尝试过:

$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
                                                      'action' => 'boo',
                                                      'one' => &$one,
                                                      'two' => $two,
                                                 ));
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

有没有办法将其他参数传递给前向控制器?

UPD:

这些也不起作用:

$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
                                                      'action' => 'boo',
                                                      'params' => array(
                                                          'one' => &$one,
                                                          'two' => $two,
                                                     )));


$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
                                                      'action' => 'boo',
                                                      'options' => array(
                                                          'one' => &$one,
                                                          'two' …
Run Code Online (Sandbox Code Playgroud)

php zend-framework-mvc zend-framework2 zend-framework-routing

7
推荐指数
2
解决办法
1万
查看次数

ZF3中的ServiceManager

我知道这已经在其他线程中得到了广泛的介绍,但是我很难弄清楚如何从ZF3控件中的ZF2控制器复制$ this-> getServiceLocator()的效果.

我尝试使用我在这里和其他地方找到的各种其他答案和教程来创建一个工厂,但最终却陷入了混乱,所以我粘贴了我的代码,就像我开始希望那样有人可以指出我正确的方向吗?

来自/module/Application/config/module.config.php

'controllers' => [
    'factories' => [
        Controller\IndexController::class => InvokableFactory::class,
    ],
],
Run Code Online (Sandbox Code Playgroud)

来自/module/Application/src/Controller/IndexController.php

public function __construct() {
    $this->objectManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
    $this->trust = new Trust;
}
Run Code Online (Sandbox Code Playgroud)

php zend-framework-mvc zend-framework3 zend-servicemanager

7
推荐指数
1
解决办法
4425
查看次数

如何使用Zend Framework提供静态页面

我们目前在我们的网站上使用Zend Framework和MVC模式.我们有大量的静态页面,这些页面位于站点的随机区域.这些页面不是简单的HTML页面,它们可以完全绕过ZF ......它们将参与Zend_Layout等.

在不为每个随机页面创建单独的操作/控制器的情况下,提供这些页面的最佳方法是什么?重做页面的布局,使它们都属于"misc"控制器或某些东西不是一个选项,页面需要保持在我们的URL层次结构中用于SEO目的.

zend-framework-mvc

6
推荐指数
1
解决办法
4204
查看次数

Zend_Auth最佳实践

我的目标是要求登录某些页面.我正在使用Zend Framework MVC,我正在尝试找到有关最佳实践的示例.

关于我正在寻找的一些注意事项:

  • 我希望未登录的用户获得登录框,然后在经过身份验证后返回登录版本的页面
  • 我想使用依赖注入,并避免单例
  • 小代码占用空间 - 与Zend mvc结构相结合
  • 登录框应该是一个单独的控制器并进行标题重定向吗?如何在auth成功后返回登录页面?简单地调用登录控制器操作以在登录页面中显示登录框的想法,或者这是否是关于搜索引擎索引的缺点?
  • 能够使用外部库来处理cookie

或者完全不同的东西.我是Zend框架的新手,我想以"正确的方式"做到这一点.

php authentication zend-framework zend-framework-mvc

5
推荐指数
1
解决办法
1828
查看次数

ZF2 - 如何更改错误/ 404响应页面?不只是模板,而是设置新的ViewModel

默认情况下,页面在Applicationmodule.config数组中设置如下:

'template_map' => array(
    'error/404' => __DIR__ . '/../view/error/404.phtml'
Run Code Online (Sandbox Code Playgroud)

我想改变页面.我想要新ViewModel的变量充满变数.这意味着仅仅更改模板是不够的:

'error/404' => __DIR__ . '/../view/error/my_new_404_template.phtml'
Run Code Online (Sandbox Code Playgroud)

但我无法理解如何制作它.我无法看到请求的方式'error/404'.

  • 如何ViewModel为它创造新的?

  • 如何将变量附加到它?

  • 如何通过路线来'error/404'改变它?

例如,我有这样的'error/404'页面方法:

public function pageNotFoundAction() {

    $view = new ViewModel();

    $view->setTemplate('error/404');     // set my template

    $sm = $this->getServiceLocator()->get('SessionManager');
    $cont = new Container('SomeNamespace', $sm);

    $view->var1 = $cont->offsetGet('someValue1');   // the "error/404" template
    $view->var2 = $cont->offsetGet('someValue2');   //       is full of variables
    $view->var3 = $cont->offsetGet('someValue3');
    $view->var4 = "One more view variable";

    // And now …
Run Code Online (Sandbox Code Playgroud)

php zend-framework-mvc zend-view http-status-code-404 zend-framework2

5
推荐指数
2
解决办法
1万
查看次数