如何在yii中更改URL管理流程

时间:2014-03-04 04:00:52

标签: php yii bootstrapping

我在yii中实施了这个项目。我完成了我的项目,但我想改变而不是id来命名。即网址管理。我在config.php中取消注释然后我添加了以下代码。以下是: 我的表名是食谱:

public function loadModel($id)
{
    $model=Recipe::model()->findByPk($id);
    if($model===null)
        throw new CHttpException(404,'The requested page does not exist.');
    return $model;
}

     public function loadModel2($name)
{
            $model=Recipe::model()->find('t.name=:name', array(':name' => $name));
    if($model===null)
        throw new CHttpException(404,'The requested page does not exist.');
    return $model;
}

除了这个我添加了网站控制器的顶部使用Recipe。但它显示错误

使用非复合名称'Recipe'的use语句无效 请建议我合适的答案

1 个答案:

答案 0 :(得分:0)

我个人在我的项目中使用类似/ product-name / p / 1的东西,这是SEO友好的。要使您的链接看起来像您必须先更改网址规则

    'urlManager' => array(
        'urlFormat' => 'path',
        'showScriptName' => false,
        'urlSuffix' => '/',
        'rules' => array(
            '<title:.*?>/p/<id:\d+>'=>'product/view',
        ),
    ),

然后使用它来创建您的网址。

Yii::app()->createUrl('product/view',array('id'=>$model->id, 'title'=>$model->name))

现在它有两种方式,创建网址将始终创建像/ product-name / p / 1这样的网址,而且你可以用正常的方式显示产品

/**
 * Displays a particular model.
 * @param integer $id the ID of the model to be displayed
 */
public function actionView($id)
{
    $model = $this->loadModel($id);
    $this->render('view',array(
        'model'=>$model,
    ));
}