codeigniter のルートを symfony でそのように機能させる方法はありますか?
そこにルートパスの名前を変更することができますが、それでも出力には影響しません。これは、codeigniter とは異なり、ルートパスではなくルート名が呼び出されるためです。
たとえば、symfony では、ルートは次のように設定されます。
news_index:
path: /news
defaults: { _controller: CmsBundle:News:index }
news_view:
path: /news/view/{id}
defaults: { _controller: CmsBundle:News:view }
そして、ルートパスではなくルート名を呼び出すことで、テンプレートでそれにアクセスできます
<?php
// outputs: /news
echo $view['router']->generate('news_index');
// outputs: /news/view/1
echo $view['router']->generate('news_view',array('id' => $news_id));
?>
したがって、ルートパスを変更しても、ルート名を呼び出しているため、コードで呼び出す方法には影響しません。出力を変更するだけです。
news_index:
path: /articles
defaults: { _controller: CmsBundle:News:index }
news_view:
path: /articles/item/{id}
defaults: { _controller: CmsBundle:News:view }
まだ同じコードですが、出力が変更されます
<?php
// outputs: /articles
echo $view['router']->generate('news_index');
// outputs: /articles/item/1
echo $view['router']->generate('news_view',array('id' => $news_id));
?>
codeigniter で、次のようにルートを設定した場合:
$route['news'] = 'NewsController';
$route['news/view/(:num)'] = 'NewsController/view/$1';
私がそれを呼び出す唯一の方法は、ルートパスによるものです:
<?php
echo anchor('news');
echo anchor('news/view'.$news_id);
?>
パスを変更すると、ビューで書いた内容も変更する必要があります。それは面倒だろう。それで、symfony のように動作させる方法があるかどうか疑問に思っています。誰かが私を助けてくれれば幸いです。そして、私の説明が明確でない場合はお詫び申し上げます。英語は私の母国語ではありません:)