0

在可能的视图中我使用

   <option><?=__('Select Language')?>:</option>
                    <option <?= (isset($userSetting['UserSetting']) && $userSetting['UserSetting']['user_lang'] == 'eng') ? 'selected="selected"' : '' ?> value="eng" >English</option>
                    <option <?= ( isset($userSetting['UserSetting']) && $userSetting['UserSetting']['user_lang'] == 'fre') ? 'selected="selected"' : '' ?> value="fre">French</option>
                    <option <?= ( isset($userSetting['UserSetting']) && $userSetting['UserSetting']['user_lang'] == 'ger') ? 'selected="selected"' : '' ?> value="ger">German</option>
                    <option <?= ( isset($userSetting['UserSetting']) && $userSetting['UserSetting']['user_lang'] == 'ita') ? 'selected="selected"' : '' ?> value="ita">Italian</option>

我正在使用语言表,并且我为每种语言分配了权重现在我想根据语言表中的权重在我的视图中显示上述选项,我必须在我的视图中编写什么查询以及在哪里获得所需的输出.. ..

谢谢

4

3 回答 3

0

如果UserSetting是模型,只需order在检索数据时传递一个参数。

$userSetting = $this->UserSetting->find('all', array(
                   'order'=> array('weight'=>'DESC')
               ));

然后使用适当foreach的输出您的语言。如果数据来自数据库,则不需要“手动”执行此操作。

于 2013-03-16T10:11:55.173 回答
0

为什么你要手动输出所有选项?使用为此目的的 HtmlHelper;

在您的控制器内部;

// get the languages from your database
$languages = $this->Language->find('list', array(
    'order' => array('weight' => 'desc')
));

$this->set('languages', $languages);

在您的视野中:

echo $this->Form->input(
    'UserSetting.user_lang', 
    array(
         'options' => $languages,
         'empty' => __('Select language'),
    )
);

但是,如果您的模型关系和主/外键在您的应用程序中正确定义,您应该通过以下方式检索语言;

$languages = $this->UserSetting->Language->find('list', array(
    'order' => array('weight' => 'desc')
));

如果'primaryKey''displayField'属性在您的Language模型中正确配置,这应该检索正确的键/值对(http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#find-list

FormHelper 的键应该是UserSetting.Language; CakePHP 应该会自动从$languagesviewVar 中自动找到可用的选项;

echo $this->Form->input('UserSetting.Language', array('empty' => __('Select language')));

还要确保使用 FormHelper 正确“创建”和“关闭”表单

在手册中阅读;

本节包含一个保存关联数据的示例以及如何创建表单的示例;

http://book.cakephp.org/2.0/en/models/saving-your-data.html#saving-related-model-data-hasone-hasmany-belongsto

http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#creating-form-elements

于 2013-03-16T10:15:28.883 回答
0
(isset($userSetting['UserSetting']) && $userSetting['UserSetting']['user_lang'] == 'eng') ? 'selected="selected"' : ''

最后缺少一个')'。

echo (isset($userSetting['UserSetting']) && $userSetting['UserSetting']['user_lang'] == 'eng' ? 'selected="selected"' : '');

那应该这样做。

于 2013-03-16T09:08:16.437 回答