SilverStripe多对多翻译问题

时间:2015-09-17 18:34:17

标签: php frameworks silverstripe

我有SilverStripe项目(3.1.12 cms和框架)。

我正在为cms使用silverstripe-translatable扩展程序,以便在我的网站上翻译内容。

我创建了两种网页类型:ProductPageCategoryPage

以下是我在管理面板中创建用于创建UI的代码,用于复选产品将出现的类别(在getCMSFields()函数内):

ProductPage.php

...
$options = CategoryPage::get();
$cb = new CheckboxSetField(
    $name = "categories",
    $title = "Select Categories",
    $source = $options, 
    $value = $this->CategoryPage()
);
$fields->addFieldToTab("Root.Categories", $cb);
...

以下是我在ProductPageCategoryPage

之间private static $belongs_many_many = array( 'Categories' => 'CategoryPage' ); 建立关系的地方
CategoryPage

<?php class CategoryPage extends Page { ... private static $many_many = array( 'Products' => 'ProductPage' ); // This function is used to get all products // that belong to one or more than one category // (thanks to many-many relationship public function AllProducts() { return $this->Products(); } ... 也一样,这里是代码:

$AllProducts

然后,如果我循环遍历<% loop $AllProducts %> $Title <% end_loop %> 这样的函数:

default_locale

一切都很好(产品以正确的类别显示),直到我将我的语言环境改为另一个(比如从英语到拉脱维亚语或俄语)。

这种情况正在发生,因为我没有设置哪些产品会出现在非默认区域设置中的哪个类别,因此,实际问题是:我如何访问"bin": [ "bin/phantomjs" ], 在非默认语言环境中的关系?

P.S。我有一个工作网站,为什么我想实现这一点,是因为产品和类别的数量(有很多,所以在我所拥有的每个区域设置中编辑每个产品和类别关系都会很愚蠢)

提前致谢!

1 个答案:

答案 0 :(得分:0)

过去我在布局/模板中调用了$Master.RelationName,这可能有用。所以你的循环就像:

<% loop $Master.AllProducts %>
    $Title
<% end_loop %>