我正试图使用Zend Framework 2构建我的第一个控制台应用程序,对该框架和原则进行修补,我正试图在我的控制器中创建一个操作,该操作只需"重定向"到原则模块中的另一个操作。
我试着这样做:
public function setupAction() {
return $this->redirect()->toRoute('orm:schema-tool:create');
}
但我有
Zend'Mvc'Router'Exception'RuntimeException Route with name "orm:schema-tool:create" not found
但是,如果我直接从命令行调用操作orm:schema-tool:create
,它将按预期工作。
不需要将请求重定向到Doctrine的CLI界面,您可以使用SchemaTool手动轻松实现相同的效果,它不需要太多挖掘。
例如:
use Doctrine'ORM'Tools'SchemaTool;
use Zend'Mvc'Controller'AbstractConsoleController;
BarController extends AbstractConsoleController
{
public function setupAction() {
$em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
$schemaTool = new SchemaTool($em);
$metaData = $em->getMetaDataFactory()->getAllMetaData();
// This will return all SQL queries which needs to run to create schema
$sql = $schemaTool->getCreateSchemaSql($metaData);
// This will directly execute that queires.
$schemaTool->createSchema($metaData);
}
}
您可能还想检查SchemaTool的其他接口方法,如updateSchema()和dropSchema()。
希望能有所帮助。
orm:schema-tool:create
不是ZF2路由,它是传递给条令命令行脚本的命令。我猜你实际上并不想重定向,你只是想运行条令命令运行的内容。这可能是可能的,但需要在条令代码中进行一些挖掘。