もう 1 つの方法generateObjectUrl()
は、オブジェクトの管理クラスでメソッドをオーバーライドすることです。
/**
* @see \Sonata\AdminBundle\Admin\Admin::generateObjectUrl()
*/
public function generateObjectUrl($name, $object, array $parameters = array(), $absolute = false)
{
if ('show' == $name) {
return $this->getRouteGenerator()->generate('your_route_to_public_facing_view', [
'id' => $this->getUrlsafeIdentifier($object),
], $absolute );
}
$parameters['id'] = $this->getUrlsafeIdentifier($object);
return $this->generateUrl($name, $parameters, $absolute);
}
以上です。テンプレートをいじる必要はありません。また、他のすべての管理者で実行されるテンプレート コードはありません。
$showMapper
リンクを自動的に表示するには、 viaに何かを追加する必要がありますconfigureShowFields()
。(もっといい方法を知っている人がいたら教えてください。)
オーバーライドgenerateObjectUrl()
にはもう 1 つの利点があります。show
にボタンを表示する$listMapper
と、そこの URL も更新されます。
言うように編集:これはshow
ルートをオーバーライドするため、その組み込み機能を使用できなくなります。すべてのフロントエンド css と js がロードされた状態でオブジェクトを表示する必要があるため、これで問題ありません。