【问题标题】:Yii - URL mamanement optimizationYii - URL 管理优化
【发布时间】:2012-12-02 12:07:51
【问题描述】:

我有一个名为 categories 的表:

  • 身份证
  • 类别名称
  • parent_id

和表产品:

  • 身份证
  • category_id
  • 产品名称

为了简单起见,product_name 和 catogory_name 是唯一的 URL 别名

我想像那里一样制作网址

shop/computer_parts/cpu/intel - 是具有父 cpu 和计算机的“intel”类别的 url

还有类似的产品

shop/computer_parts/cpu/intel/intel_core_i5_2500k - 是产品

我看到了解决方案,添加了类似的模型方法

类别模型

public function geturl() {
    ***in cycle getting aliases of all parents***
    return Yii::app()->createUrl( ...etc
}

和产品

public function geturl() {
    *** getting aliases of category and parents ***
    return Yii::app()->createUrl( ...etc
}

这样做更简单吗?

【问题讨论】:

    标签: php url yii


    【解决方案1】:

    首先,在主配置 (protected/config/main.php) 中将 urlFormat 设置为 path 并将 showScriptName 设置为 false:

    'urlManager'=>array(
        'urlFormat'         =>  'path',
        'showScriptName'    =>  false,
        'rules'=>array( 
            ...
    

    接下来,您需要在配置中为 URL 设置规则,例如:

    shop/<parent:.+>/<child:.+>/<category:.+>/<product:.+>    => 'product/view',
    shop/<parent:.+>/<child:.+>/<category:.+>/                => 'product/index',
    

    这将这两个 URL 指向产品/视图和产品/索引(显然这将更改为您必须处理每个控制器/操作)。您现在将能够从 URL 访问所有 GET 变量,例如:

    $product = $_GET['product'];
    

    您必须编写控制器/动作来确定您当前在 URL 结构中的级别并相应地处理它。

    【讨论】:

    • No no) 我知道这一点,当我获取每个产品的 url 时,我是关于服务器的负载
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多