Tôi đã đọc tất cả các bài đăng về định tuyến và Tài liệu Zend nhưng tôi vẫn không thể giải quyết vấn đề này.Các sự cố định tuyến Zend
Tôi có ứng dụng đa ngôn ngữ với hai mô-đun: mặc định và quản trị viên. Việc lựa chọn ngôn ngữ đang làm việc tốt (trong một điều khiển routeShutdown Plugin), nhưng tôi có một số vấn đề cấu hình router:
Tôi muốn có những URL làm việc:
/
/controller
/controller/action
/action (default controller)
/controller/param (default action)
/admin
/admin/admin-controller
/admin/admin-controller/action
và sử dụng bộ chọn ngôn ngữ nó sẽ là :
/en
/en/controller
/en/controller/action
/en/action (default controller)
/en/controller/param (default action)
/en/admin/admin-controller
/en/admin/admin-controller/action
tôi thêm này để tập tin của tôi bootstap (index.php):
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->removeDefaultRoutes();
$router->addRoute('langmodcontrolleraction',
new Zend_Controller_Router_Route('/:lang/:module/:controller/:action',
array('lang' => ':lang'))
);
$router->addRoute('langmodcontroller',
new Zend_Controller_Router_Route('/:lang/:module/:controller',
array('lang' => ':lang',
'action' => 'index'))
);
$router->addRoute('langmod',
new Zend_Controller_Router_Route('/:lang/:module',
array('lang' => ':lang',
'action' => 'index',
'controller' => 'index'))
);
$router->addRoute('lang',
new Zend_Controller_Router_Route('/:lang',
array('lang' => ':lang',
'action' => 'index',
'controller' => 'index',
'module' => 'default'))
);
$frontController->setControllerDirectory(array(
'default'=>BASE_PATH.'app/modules/default/controllers',
'admin'=>BASE_PATH.'app/modules/admin/controllers'));
Để kiểm tra cách router được phân tích cú pháp URL, tôi đã thêm một var_dump để các plugin routeShutdown:
Bước tới /en, tôi nhận được:
array
'lang' => string 'en' (length=2)
'action' => string 'index' (length=5)
'controller' => string 'index' (length=5)
'module' => string 'default' (length=7)
đó là OK. Nhưng khi tôi nhập để /en/controller1 tôi nhận được:
array
'lang' => string 'en' (length=2)
'module' => string 'controller1' (length=8)
'action' => string 'index' (length=5)
'controller' => string 'index' (length=5)
Nó được thiết lập module để "controller1". Làm thế nào tôi có thể nói cho router để thiết lập giá trị mặc định cho module? Và cho một URL như/en/controller/param? (đặt mô-đun và hành động thành mặc định)
đây là một câu trả lời rất hữu ích, giải thích của bạn là hoàn hảo, bây giờ tôi hiểu cách thức hoạt động của định tuyến :) cảm ơn bạn! Khi tôi đạt đến 15 đại diện. Tôi sẽ bỏ phiếu cho câu trả lời của bạn. Đây là trang web của tôi, nơi tôi sẽ thực hiện điều này: [tryandsay.com] (http://www.tryandsay.com) – Gustavo