如何根据oder显示视图中的选项

时间:2013-03-16 07:54:03

标签: cakephp phpmyadmin

in may view i use

   <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>

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

由于

3 个答案:

答案 0 :(得分:0)

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

最后有一个')'。

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

应该这样做。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分: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'模型中的Language'displayField'属性配置正确,则应检索正确的键/值对(http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#find-list

FormHelper的关键应该是UserSetting.Language;然后,CakePHP应自动从$languages viewVar中自动查找可用选项;

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