したがって、urlManager を使用して、この時点に到達できました。
'people/<id:\d+>/<last:.*?>/<name:.*?>'=>'person/view',
これを生成します: http://foo.com/people/3/smith/john
ID番号、この場合は「3」をなくしたい
私はこれを使ってみました:
'people/<last:.*?>/<name:.*?>'=>'person/view', //makes sense right?
ただし、 http://foo.com/people/smith/johnに移動しようとすると、サーバー 400 エラーが発生します。何を与える?代わりに .htaccess ファイルを変更してみる必要がありますか?
ここで要求されているのは、私の urlManager コンポーネント全体です。
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'about' => array('site/page', 'defaultParams' => array('view' => 'about')),
'contact'=>'site/contact',
'login' =>'site/login',
'/'=>'site/index',
'people/<last:.*?>/<name:.*?>'=>'person/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
ここに私の PersonController.php ファイルがあります:
public function actionView()
{
$person=$this->loadModel();
$this->render('view',array(
'model'=>$person,
));
}
private $_model;
public function loadModel()
{
if($this->_model===null)
{
if(isset($_GET['last']))
{
$this->_model=Person::model()->findByPk($_GET['id']);
}
if($this->_model===null)
throw new CHttpException(404,'The requested page does not exist.');
}
return $this->_model;
}