1

「メニュー」ラジオボタンのオプションがたくさんある「ビュッフェメニューリスト」フォームを作成しています。ただし、これらの値はすべて、次の例のように「インライン」であることに注意しました。http: //demo.atk4.com/demo.html ?t=14

最初に、すべての値に改行を追加する方法を知りたいのですが、次に、特定のオプション値の間にある種の<p> </ p>を追加してグループをシミュレートする方法(論理グループ化)を知りたいです。

前もって感謝します!

4

1 に答える 1

2

私が考えることができる2つの解決策があります。

いくつかのインスピレーションについては、ここの例を見てください。

http://agiletoolkit.org/doc/grid/columns

1.グリッドにカスタムフィールドを追加する

まず、マークアップのないフォームを作成します。

$form = $this->add('Form',null,null,array('form_empty'));

次に、グリッドを次のようなフォームに追加します。

$grid = $form->add('Grid'); // or MVCGrid if you are using models

選択する列を追加します。

$grid->addColumn('template','selection')
     ->setTemplate('<input type=radio name=selection value="<?$id?>"/>');

最後に-列'selection'が最初(または最後)であることを確認します

$grid->addOrder()->move('selection','first')->now();

最後に、POSTデータは実際のフォーム列ではないため、手動で調べる必要があります。

if($form->isSubmitted()){
    $this->js()->univ()->successMessage('Selection is '+((int)$_POST['selection']))
          ->execute();
}

POSTにアクセスすると、インジェクション攻撃に直接さらされることを覚えておく必要があります。また、POSTを適切に検証する必要があります。グリッドもフォーム内にある必要がありますが、送信ボタンはページの他の場所に配置できます。「Form_Plain」を使用することもできます。例については、「http://agiletoolkit.org/whatsnew」を参照してください。

2.JavaScriptと隠しフィールドを使用する

この例では、ラジオボタン要素の束を追加してフォームに結び付けることができます。ここでは「グリッド」の代わりに「リスター」も使用しています。もちろん、これらのアプローチを組み合わせることができます。

$form = $this->add('Form');
$selection = $form->addField('line','selection');
// can be placed anywhere.

$menu = $this->add('MVCLister',null,null,array('view/menu'));
$menu->setModel('MenuItems'); 

$menu->js(true)->find('input[type=radio]')->click(
    $selection->js()->_enclose()->val(
        $this->js()->_selectorThis()->val()
    );
);
// produces $('#menu_id').find('input[type=radio]').click(function(){
//    $('#selection_id').val( $(this).val() );
// }

view/menu.htmlテンプレートファイルは次のようになります。

<div class="menu-container">
<?rows?><?row?>
    <div><input type="radio" name="anything" value="<?$id?>"> <?$name?> </div>
<?/row?><?/rows?>
</div>

編集:フェルナンドのために働いたコード

$grid->addColumn('template','Menu')
    ->setTemplate('<input type=\'radio\' name=\'selection\' value="<?$value?>"/> <?$value?>');
if($form->isSubmitted()){
    $this->js()->univ()
         ->successMessage('Hoy: <b>'.$_POST['selection'].'</b>')->execute();
}
于 2011-09-14T14:17:04.183 に答える