A ver, creo que no me has entendido bien, es 1 controller para manejar las marcas y pasas como parámetro en la uri la marca.
view
Código HTML:
Ver original <a href="<?php echo $this->url(array(
'controller' => 'vendors',
'name' => 'opel')); ?>" >Opel
</a> <a href="<?php echo $this->url(array(
'controller' => 'vendors',
'name' => 'seat')); ?>" >Seat
</a>
controller
Código PHP:
Ver originalclass VendorsController extends Zend_Controller_Action
{
public function init()
{}
public function indexAction()
{
$vendor = $this->_getParam('name');
$this->view->vendor = $vendor;
}
...
}
en tu caso como en todas las acciones tienes que controlar la marca, puedes hacer un plugin que la cargue y sete al FrontController|Request el modelo, es una forma de resolverlo, puedes tambien hacerlo en cada uno de los actions, en el preDispatch, el init, hay muchas formas de resolverlo, si fuera un plugin, podria ser algo asi:
Código PHP:
Ver originalclass My_Controller_Plugin_VendorLoader extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$controller = strtolower($request->getControllerName()); if('vendor' == $controller) {
$service = My_Service_Abstract::load('Vendor');
$vendor = $service->find($request->getParam('name'));
if(false === $vendor) {
throw new VendorNotFoundException();
}
$fc = Zend_Controller_Front::getInstance();
$fc->setParam('vendor', $vendor);
}
}
}
luego en el controller en vez de obtener el name, obtienes directamente el modelo
Código PHP:
Ver originalpublic function indexAction()
{
$vendor = $this->_getParam('vendor');
$this->view->vendor = $vendor;
}
esto te va a generar url mas largas, algo asi:
project.local/vendors/index/name/seat
project.local/vendors/info/name/seat
project.local/vendors/gallery/name/seat
y ahi es donde entra en juego el router, lo que te comento
GatorV, para hacer seo url's, y que queden mas o menos así:
project.local/vendors/seat
project.local/vendors/seat/info
project.local/vendors/seat/gallery
Saludos.