具体5:用于在可变父页面路由下呈现数据库内容的单页

问题描述

比如说,有一个页面 /catalog 是所有产品的父页面。我可以拥有带有页面的永久路由,例如/catalog/product/1、/catalog/product/2 等

但是用户可以选择任何其他页面作为目录产品的父页面,例如/股票。

如何在变量节点上呈现产品数据,例如/{variable-page}/product/{id}?

每个产品的多个页面很容易 - 只需创建一个“product_list”块以在父页面上呈现所有产品,并创建一个“product”块以在 product_list 的子页面上呈现每个产品。

但我不想要一百万页。我只需要 1 个页面就可以在父页面下呈现任何产品的 DB 内容,其名称和路线可以更改。

解决方法

虽然不确定这是最好的方法......以下有效。现在哪个页面有产品列表都没有关系,任何孩子都在 /whatever/product/uid

控制器:

public function action_product($uid = 0)
{
    $product = Product::getByUID($uid);
    if ($product instanceof Product) {
        $this->set('product',$product);
        $this->runAction('product');
    }
    else {
        $this->runAction('view');
    }
}

查看:

if ($controller->getAction() === 'product') {
    ...
} else {
    ...
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...