0

アジャイルツールキットを学んでいるので、いくつか質問があります...

まず、いくつかのデータ、実際にはいくつかのテーブルを含むデータベースを使用して、それを稼働させます。あまりにも大きなものはありません。

基本的な CRUD ですべてのテーブルを編集できますが、レイアウト コントロールで CRUD インターフェイスを拡張できるかどうか知りたいです。

これが私が意味することです:

モデルで定義された多くのフィールドを持つテーブルと、そのモデルを CRUD で参照するページがあります。CRUD グリッドのすべてのフィールドを実際に表示する必要はありませんが、CRUD が提供する編集ボタンをクリックして、必要な他の特定のフィールドを編集できるようにしたいと考えています。私が求めている効果は、いくつかの列を持つグリッドですが、CRUD のようにその場で編集できます。これは可能ですか?

また、適切なフィールドのチェックボックスと日付ピッカーを使用して CRUD エディターをフォーマットできましたが、オーバーレイ エディターは大きすぎてテーブル内のすべてのフィールドを表示できないため、オーバーレイをセクションでフォーマットできるようにしたいと考えています。フィールドなどのサイズを縮小します。

これは可能ですか、それとも別の方法 (フォームを含む複数のページ) で処理する必要がありますか?

おそらく、特定の列を含むグリッド レイアウトを考えていますが、レコード用に選択した編集フィールドを含む別のページを表示する列に [編集] ボタンが必要ですか?

4

2 に答える 2

1

グリッドとフォームに表示される列を制限して、setModel の 2 番目のパラメーターを使用してモデル内のすべてを表示しないようにすることができます。

   $c1=$crud1->setModel($m, array('id', 'name', 'column1', 'column2'));

where 句を修正する addCondition を使用して、グリッドに表示される行を制限できます。両方合わせるとこんな感じ

 <?php
 class page_yourpage extends Page {

 function init() { 
   $p=$this;

   $crud1=$p->add('View_CRUD');
   $m=$p->add('Model_YourModel');
   $m->addCondition('column1','value1');
   $m->order('column2');

   $c1=$crud1->setModel($m, array('id', 'name', 'column1', 'column2'));

 }
}
?>

mcanedo で提案されているように、フィールドを system(true) に設定すると、グリッドに列を表示できますが、追加/編集フォームには表示されません。

グリッドまたはフォームに表示されていないが、$m->get('columnname') を使用してページを参照するときにアクセス可能なフィールドを持つこともできます。 mysql。

<?php
class Model_YourModel extends Model_Table {
    public $entity_code='yourtable';.
    public $table_alias='yt';

    function init(){
        parent::init();
        $this->addField('id')->system(true)->visible(false);
        $this->addField('name');
        $this->addField('column1')->system(true);
        $this->addField('column2')->system(true)->visible(false);

これにより、名前の列と列 2 を含むグリッドが作成されますが、新しいフィールドを追加または編集するときは、名前の値のみを入力できます。

次に、以下のように YourModel に追加することで、これをさらに進めることができます (そして、YourModel.column3_id が別のテーブルへの外部キーを持つフィールドであると仮定します)

         $this->addFIeld('column3_id')->refModel('Model_AnotherModel');

ここで、「AnotherModel」は次のように定義されています

  <?php
  class Model_AnotherModel extends Model_Table {
    public $entity_code='anothertable';.
    public $table_alias='at';

    function init(){
        parent::init();
        $this->addField('id')->system(true)->visible(false);
        $this->addField('name');
     }
  }

これにより、ユーザーが「別のテーブル」から有効な値を選択できるフォームにドロップダウン リストが追加され、グリッドには、実際に「yourtable」に格納されている ID の代わりに名前フィールドが表示されます。

于 2012-07-23T16:55:23.163 に答える
0

Crudに表示したくない特定のフィールドがある場合、それらはシステムフィールドとしてラベル付けされている可能性があると思います。これは、モデル定義で次のように実行できます。

$this->addField('somefield')->system(true);
于 2012-07-21T02:31:05.557 に答える