我有一个问题,ZF2没有从我的控制器重定向。当我调用url xyz.dev/event时,它会重定向到我的主页(“/”),如路由中所定义。当我调用xyz.dev/event/1(现在设置了id)时,它也应该重定向到home,这不会发生。我收到了错误
Url plugin requires that controller event compose a router; none found
我的代码在这里:
namespace Event\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Mvc\Router\SimpleRouteStack;
use Event\Model\EventTable;
use Zend\Mvc\Router\Http\Segment;
use Zend\Mvc\MvcEvent;
class IndexController extends AbstractActionController {
protected $eventsTable;
public $event;
public $_event;
public function indexAction() {
$id = (int) $this->params()->fromRoute('id', 0);
if (!$id) {
return $this->redirect()->toRoute("home");
}
$this->event = $this->getEventsTable()->getEvent($id);
// if ($this->event->end < date("Y-m-d")) {
return $this->redirect()->toRoute('home');
// }
return new ViewModel(array("event" => $this->event));
}
public function getEventsTable() {
if (!$this->eventsTable) {
$sm = $this->getServiceLocator();
$this->eventsTable = $sm->get("Event\Model\EventTable");
}
return $this->eventsTable;
}
}
第一次重定向
if (!$id) {
return $this->redirect()->toRoute("home");
}
工作正常,第二个不是......任何想法? 谢谢, 亚历
答案 0 :(得分:0)
检查你的module.config文件路由部分,检查哪个路由条件正确如下:
'home' => array(
'type' => 'segment',
'options' => array(
'route' => '/home[/:action][/:id][/]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]*',
),
'defaults' => array(
'controller' => 'Home\Controller\Home',
'action' => 'index',
),
),
),
您可能忘记在路由参数中提及可选参数( id )。
我希望这有效......