0

5月に私が使用する

   <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/retrieveing-your-data.html#find-list

そして、FormHelperのキーはUserSetting.Language;である必要があります。$languagesその後、CakePHPは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

于 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 に答える