0

私の考えはこうです。こんな感じで Model に関数を作成します。

public function status($id = null)
{
$conditions = array('Transaction.catalogue_id' => $id);
$status = $this->find('first',array('conditions' => $conditions, 'fields' => array('Transaction.status'),'order' => array('Transaction.id' => 'desc'))
  );
return $status['Transaction']['status'];
}

このループから $id の値を送信するにはどうすればよいですか?

<table cellspacing="0" cellpadding="0" border="0" class="all">
      <thead>
      <tr>
          <th>No</th>
          <th>Title</th>
          <th>Author</th>
          <th>ISBN</th>
          <th>Location</th>
          <th>Availability</th>
      </tr>
      </thead>
      <?php $count = 1;?>
      <tbody>  
      <?php foreach ($Catalogue as $Catalogue): ?>
      <tr>
          <td><?php echo $count++; ?></td>
          <td><?php echo $this->Html->link($Catalogue['Catalogue']['title'],array('controller' => 'transactions', 'action' => 'view',$Catalogue['Catalogue']['id']),array('escape' => false, 'class' => 'ajax')); ?></td>
          <td><?php echo $Catalogue['Catalogue']['author']; ?></td>
          <td><?php echo $Catalogue['Catalogue']['isbn']; ?></td>
          <td><?php echo $Catalogue['Location']['rack']; ?></td>
          <td><?php echo $this->getstatus($Catalogue['Catalogue']['id'])</td>
      </tr>
      <?php endforeach; ?>
      </tbody>
      <?php unset($Catalogue); ?>
  </table>

$this->getstatus($Catalogue['Catalogue']['id']) を実行できますか?

4

3 に答える 3

0

次のように、モデルを変数としてビューに渡すことができます。

public function action() {
    ...
    $this->set('Catalogue', $this->Catalogue);
} 

次に、ビューで次のことができます。

<td><?php echo $Catalogue->getstatus($catalogue['Catalogue']['id'])?></td>

ただし、モデルでこれを行う必要があります。アイテムのリスト全体とそのステータスを取得しようとしています。

于 2013-01-07T15:29:53.990 に答える
0

質問の謝罪を誤解してください: はい、requestAction $this->requestAction('controllerName/actionName/'.$parameter); を使用して、ビュー ページから関数 (コントローラー内) にアクセスできます。

だからあなたの場合:

 $this->requestAction('status/' .$Catalogue['Catalogue']['id']);

==========================================

何らかの形で役立つ場合に備えて、元の(間違った)回答を残します:)

ビューページで呼び出すことができるように、コントローラーに値を設定する必要があります。

 $this->set('status', $status);

次に、ビューページで echo $status を使用できます

あなたの例では必要ありませんが、複数の変数を作成できるように、CakePHP の copmact 関数を使用することもできます。$this->set(compact('var1','var2','var5')); 次のようにビューですべて利用可能になります。

 echo $var1.$var2.$var3;
于 2013-01-07T01:04:59.863 に答える
0

カタログとトランザクションの間の関係を定義するには、CakePHP でモデルを使用する必要があります。あなたが試みていることは可能ですが、それは必要以上の努力です。1 ~ 2 行のコード (テーブルのキーが正しく設定されている場合) と Cake が残りの作業を行います。かなりきれいですよね?はい。

Catalogue.php モデル ファイルで、Transaction との hasOne 関係を定義します。ORDER を使用して最新のレコードを取得します...

class Catalogue extends AppModel {
    public $name = 'Catalogue';

    public $hasOne = array(
       'Transaction' => array(
           'className'    => 'Transaction'
           'order'        => 'Transaction.id DESC'
       )
    );
}

そして、あなたの見解では、代わりに

<td><?php echo $Catalogue['Catalogue']['id'];?></td>

ただする

<td><?php echo $Catalogue['Transaction']['status'];?></td>

CakePHP のリレーションシップの詳細については、こちらのマニュアルを参照してください。

于 2013-01-07T01:34:13.327 に答える