2

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 のように動作させる方法があるかどうか疑問に思っています。誰かが私を助けてくれれば幸いです。そして、私の説明が明確でない場合はお詫び申し上げます。英語は私の母国語ではありません:)

4

1 に答える 1

1

ルーター拡張機能を使用した symfony のような名前付きルートへの彼のアプローチについて説明している@ kennykからのブログ投稿があります。

この記事は、CodeIgniter を使用した簡単なリバース ルーティングと呼ばれています。

それがあなたが探しているものだと思います。

于 2013-07-07T14:22:25.890 に答える