我正在尝试使用路由创建带有查询字符串的URL,如下所示:
$this->url('users') -> /users
$this->url('users', ['sort' => 'desc']) -> /users?sort=desc
Run Code Online (Sandbox Code Playgroud)
然而,这似乎不起作用(第二个助手实际输出/users).根据这个非官方的,过时的文档,曾经有一种方法可以通过附加/query到路由名称来实现,但是这会给出一个路由未找到的异常.
可以使用当前的url帮助程序完成吗?
我在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
我正在尝试创建一个路径(或两个),让我使用以下URL格式调用两个不同的操作.
mydomain.com/profile
mydomain.com/profile/1234/something
Run Code Online (Sandbox Code Playgroud)
对于第二种格式,1234应该是必需的整数值,而something应该是可选的字符串.通过使用文字路线,第一种格式很简单.我想我可以为第二种格式添加一个段子路由,但我无法让它工作.我试图省略第一种格式,只用分段路线做第二种格式,但我也没有成功.
这是我尝试过的:
'profile' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/profile',
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'profile'
)
),
'child_routes' => array(
'profile_view' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/:code[/:username]',
'constraints' => array(
'code' => '[0-9]*',
'username' => '[a-zA-Z0-9_-]*'
),
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'view_profile'
)
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
因为mydomain.com/profile,我得到以下错误:
Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with …Run Code Online (Sandbox Code Playgroud) php routing zend-route zend-framework2 zend-framework-routing
我们刚刚开始使用zf2,所以其他人制作了一个Thumbnail服务器模块,然后我添加了一个Lookup服务器模块.我称之为服务器,因为它们都是RESTful apis.最初它们似乎在一起工作,但有人对我的模块进行了一些更改,现在除非从application.config.php模块列表中删除Lookup,否则缩略图服务器将无法工作.Lookup服务器无论如何都可以.查看代码,我看不到对Lookup所做的更改会如何影响Thumbnail.我得到的错误看起来像这样:
<h1>A 404 error occurred</h1>
<h2>Page not found.</h2>
<p>The requested controller was unable to dispatch the request.</p>
<dl>
<dt>Controller:</dt>
<dd>Lookup\Controller\Lookup</dd>
</dl>
Run Code Online (Sandbox Code Playgroud)
这是application.config.php看起来像:
<?php
return array(
'modules' => array(
'Application',
'SanRestful',
'Album',
'AlbumRest',
'Thumbnail',
'Lookup',
'AP_XmlStrategy',
),
'module_listener_options' => array(
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php',
'config/autoload/{,*.}' . (getenv('APPLICATION_ENV') ?: 'production') . '.php',
),
'module_paths' => array(
'./module',
'./vendor',
),
),
);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,最初的专辑模块和其他一些实验模块.My Lookup模块使用Allessandro Pietrobelli提供的优秀AP_XmlStrategy模块.
下面是缩略图module.config.php.它有一个可能没有被使用的约束,因为没有名为"id"的参数,但这不应该搞乱,是吗?
<?php
return array(
'controllers' => array( …Run Code Online (Sandbox Code Playgroud) 我在zf2中有关于zend分页和路由的问题.我想在同一页面上显示反馈项的详细信息及其子项(操作)列表.我的路线代码如下
$routes['dashboard_inbox_actions'] = array(
'type' => 'segment',
'options' => array(
'route' => '/dashboard/inbox/detail[/:feedback[/actions/page/:page]]',
'constraints' => array(
'feedback' => '[0-9]+',
'page' => '[0-9]+',
),
'defaults' => array(
'__NAMESPACE__' => 'Dashboard\Controller',
'controller' => 'inbox' ,
'action' => 'detail',
'feedback' => 0 ,
'page' => 1
),
),
);
Run Code Online (Sandbox Code Playgroud)
我通过URL传递
/dashboard/inbox/detail/4
Run Code Online (Sandbox Code Playgroud)
在列表页面中,用于呈现子项目的提供页面.
<?php echo $this->paginationControl($this->paginator, 'Sliding' ); ?>
Run Code Online (Sandbox Code Playgroud)
创建分页网址,反馈ID为0(我的问题)
/dashboard/inbox/detail/0/actions/page/2
/dashboard/inbox/detail/0/actions/page/3
Run Code Online (Sandbox Code Playgroud)
我手动粘贴网址
/dashboard/inbox/detail/4/actions/page/2
Run Code Online (Sandbox Code Playgroud)
它将第2页显示为活动项.我的控制器代码工作正常并给我结果,但仍然paginationControl创建反馈ID为0的网址.
我正在使用Zend Framework和URL View Helper来创建URL
我的导航中有一些这样的行:
$this->url(array('controller' => 'index', 'action' => 'index'))
$this->url(array('controller' => 'who', 'action' => 'view', 'id' => $row->who_id));
$this->url(array('controller' => 'projects', 'action' => 'view', 'id' => $row->mai_id));
$this->url(array('controller' => 'content', 'action' => 'view', 'type' => 'theater', 'id' => $row->the_id));
$this->url(array('controller' => 'shows', 'action' => 'view'));
Run Code Online (Sandbox Code Playgroud)
这样,首先,我有一些像这样的URL
http://ccgss.local/information/location
http://ccgss.local/who/view/id/1
Run Code Online (Sandbox Code Playgroud)
但是当我访问具有更多参数的另一个链接时,http://ccgss.local/content/view/id/1/type/theater
它会混淆仍然存在的参数:http://ccgss.local/who/view/id/1/type/theater
我的意思是,当我访问另一个页面时,参数不会清理.
我该如何解决?
我在一个项目中使用Zend Framework 1.12。
太奇怪了。我没有使用模块。只是控制器和动作。
我的控制器文件名为MyCCController.php,“ CC”为大写。
我在该控制器文件中的操作是 MyAAAction,'AA'是大写的。
我尝试了url http://localhost:8003/Mycc/myAA。它显示错误-“找不到页面”。我用谷歌搜索,看到有人说动作名称必须是小写。因此,我将“ MyAAAction”更改为“ myaaAction”。.phtml文件是sitll'views \ scripts \ MyCC \ MyAA.phtml'。它不在乎大写或小写。
然后我访问了url http://localhost:8003/MyCC/myaa,它仍然显示“找不到页面”。
我更改了网址http://localhost:8003/Mycc/myaa,``CC''变成了``cc''。
所以我的问题是,是否有任何文章阐述MVC URL区分大小写的规则?
或者谁可以给我有关控制器,操作,*。phtml文件或其他相关名称的规则。
如果我需要动作名称为camelCase,如何实现呢?
我在这里得到了这个问题的答案,但现在我有另一个问题\问题.
我的模块中有一个subnav栏,通过帮助器从视图部分创建.这是module.config.php中的配置:
'navigation' => array(
'default' => array(
array(
'label' => 'Search',
'route' => 'mymodule\search',
),
array(
'label' => 'Log Off',
'route' => 'logout',
),
),
),
Run Code Online (Sandbox Code Playgroud)
我有一个带有2个动作的LoginController:登录和注销.登录后,我希望用户单击注销按钮,重定向到登录页面并清除其会话.
现在,如果我有登录和注销操作,我需要每个模板.这对于注销操作似乎是不必要的 - 我不希望为此操作加载另一个模板.
这是我的路由配置:
'login' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/login',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Application\Controller\Login',
'action' => 'login',
),
),
),
'logout' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/login',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' …Run Code Online (Sandbox Code Playgroud)