0

私はconcrete5を使用して問題を解決しようとしています.ユーザーは、データベースから選択された本の情報をブロックに表示できるようにしたいと考えています.選択メニューまですべてが整っています.データベースのタイトルをドロップダウンリストに入力できます.しかし、本が選択されると、ブロックは単に選択メニューのオプション配列のインデックス値を表示します。

たとえば、配列が次のように見える場合

0 => ハリー・ポッターと炎のゴブレット、1 => ゲーム・オブ・スローンズ

ユーザーがリストからハリー・ポッターを選択すると、ブロックは指定されたタイトルとして単に「0」を表示します。データベースにクエリを実行して正しい値を割り当てる関数を使用することで、これを修正できると確信しています。しかし、選択メニューから選択した項目を取得できないようです。それは配列インデックス値だけです。

何かご意見は?

コードは次のとおりです

add.php

    <?php defined('C5_EXECUTE') or die(_("Access Denied.")) ?>
<?php $titles = $controller -> getTitles() ?>
<div class="ccm-ui">
    <?php echo $form->select('bookselect', $titles, 1, array('style' => 'width: auto;')) ?>

</div>

使ってみ$ title = $this -> $_REQUEST['bookselect'];たけどうまくいかず、数時間後に途方に暮れています

4

3 に答える 3

1

コントローラー関数からタイトルのリストを既に入力しているので、ブロックの「ビュー」にそれを再利用するだけです。したがって、ブロックコントローラーでview()関数を見つけて (または、まだ存在しない場合は追加して)、次のようにします。

$titles = $this->getTitles();
$this->set('title', $titles[$bookselect]);

これで、ブロックのビュー テンプレートに$title変数が表示され、本の名前が含まれるようになります。

于 2013-06-27T19:46:44.823 に答える
0

HTML Select 要素は配列インデックス (または value 属性) を渡すだけで、値を送信することはありません。これは HTML の動作方法ではありません。

いくつかのオプションがあります。

  1. データベースのインデックスから値を検索します。
  2. 値を含むようにインデックスを変更します (例: ()
于 2013-06-27T19:03:15.980 に答える
0

選択ボックスのドキュメントは次のとおりです。

$form->select($name, $options, $selectedValue, $tagAttributes);

あなたの例では、

$form->select('bookselect', $titles, 1, array('style' => 'width: auto;'))

これにより、ゲーム・オブ・スローンズが選択された本として選択されます (使用されている値が配列のキーであると仮定します)。オプションを連想配列として渡すことができます。

array(
'Harry Potter and the Goblet of Fire'=>'Harry Potter and the Goblet of Fire',
'Game of Thrones'=>'Game of Thrones'
)

そうすれば、渡される値は値になり、タイトルに戻すとオプションの選択に役立ちます。

$form->select('bookselect', $titles, $title, array('style' => 'width: auto;'))

私はこれをテストしていないので、キーとして使用するにはタイトルの衛生状態が必要になる場合があります。

于 2013-06-30T21:43:59.390 に答える