自定义操作页面 Sonata Admin
Custom action page Sonata Admin
我想为我的奏鸣曲管理项目创建一个新的操作页面。我想制作一个上传文件的页面,但我希望这个页面不同于创建页面。我尝试更改 configureRoutes
功能并添加了 '/upload/ 路径,就像在 Sonata 教程中一样,但他们告诉我使用 getRouterIdParameter()
而我不想要 /app/class/<ID>/upload
之类的东西。我只想 /app/class/upload
.
这可能吗?
- CRUD - 创建、读取、更新、删除。因此,CRUD 控制器使用已定义的对象。当您在 CRUD 控制器中创建操作时,您必须获取对象,否则 - 您的操作将不知道要创建、更新、删除哪个对象等。
这就是为什么您应该将对象的 ID 放入您的路线。
public function superAction(Request $request, $id = null)
{
try {
if ($id !== null) {
$yourObject = $this->admin->getObject($id);
}
} catch (NotFoundHttpException $e) {
error_log($e->getMessage());
}
//... your logic
}
但是!如果您的操作不应该使用特定对象 - 您可以在路线中避免使用对象 $id
。您也可以使用 GET 方法传递变量。随心所欲。
想象一下,您想要更新所有对象。然后你可以创建updateAllAction()
然后添加这个路由:
/**
* @param RouteCollection $collection
*/
protected function configureRoutes(RouteCollection $collection)
{
$collection->add('updateAll', 'update/all');
}
只要您的操作不关心特定对象,您就可以避免在您的 uri 中使用 $this->getRouterIdParameter()
。
希望对您有所帮助。
我想为我的奏鸣曲管理项目创建一个新的操作页面。我想制作一个上传文件的页面,但我希望这个页面不同于创建页面。我尝试更改 configureRoutes
功能并添加了 '/upload/ 路径,就像在 Sonata 教程中一样,但他们告诉我使用 getRouterIdParameter()
而我不想要 /app/class/<ID>/upload
之类的东西。我只想 /app/class/upload
.
这可能吗?
- CRUD - 创建、读取、更新、删除。因此,CRUD 控制器使用已定义的对象。当您在 CRUD 控制器中创建操作时,您必须获取对象,否则 - 您的操作将不知道要创建、更新、删除哪个对象等。
这就是为什么您应该将对象的 ID 放入您的路线。
public function superAction(Request $request, $id = null) { try { if ($id !== null) { $yourObject = $this->admin->getObject($id); } } catch (NotFoundHttpException $e) { error_log($e->getMessage()); } //... your logic }
但是!如果您的操作不应该使用特定对象 - 您可以在路线中避免使用对象 $id
。您也可以使用 GET 方法传递变量。随心所欲。
想象一下,您想要更新所有对象。然后你可以创建updateAllAction()
然后添加这个路由:
/**
* @param RouteCollection $collection
*/
protected function configureRoutes(RouteCollection $collection)
{
$collection->add('updateAll', 'update/all');
}
只要您的操作不关心特定对象,您就可以避免在您的 uri 中使用 $this->getRouterIdParameter()
。
希望对您有所帮助。