0

こんにちはImは、Uploadsモデルを検索し、そのテーブルにある情報を表示する関数を作成しようとしています。

 Notice (8): Undefined variable: uploads [APP/View/Uploads/search.ctp, line 28]
 Warning (2): Invalid argument supplied for foreach() [APP/View/Uploads/search.ctp, line 28]

検索を許可される前に、このエラーが発生します。

これは私のsearch.ctpです

        <?php $uploads = $this->requestAction('uploads/search'); 
       ?>

     <div id="search">
  <?php echo $this->Form->create('Upload',array('action'=>'search'));?>
   <fieldset>
    <legend><?php __('Upload Search');?></legend>
    <?php
    echo $this->Form->input('searchupload', array('label' => false, 'class'=>'searchinput')); 

    $options = array(
                     'label' => '',
                     'value' => 'Search',
                     'class' => 'searchbutton'
                            );
    echo $this->Form->end($options);


?>
</fieldset>



    </div>
    <div id="contentbox">
<table>
    <?php foreach($uploads as $upload) : ?>  
        <tr>
            <td><?php echo $upload['Upload']['name'] ?></td>
            <td><?php echo $upload['Upload']['eventname'] ?></td>
        </tr>
    <?php endforeach; ?>
</table>
    </div>

これは、アップロードコントローラーの機能です。

   function search() {

        if (!empty($this->data)) {
    $searchstr = $this->data['Upload']['search'];
    $this->set('searchstring', $this->data['Upload']['search']);
    $conditions = array(
        'conditions' => array(
        'or' => array(
            "Upload.name LIKE" => "%$searchstr%",
            "Upload.eventname LIKE" => "%$searchstr%"
        )
        )
    );
   $this->set('uploads', $this->Upload->find('all', $conditions));
     }
        }

どんな助けでも大歓迎です!

前もって感謝します

4

2 に答える 2

0

同じビューからアップロード/検索を2回実行するのはなぜですか?

ビューからこれを削除してみてください:

<?php $uploads = $this->requestAction('uploads/search'); ?>

search.ctpでレンダリングしているのと同じアクションを呼び出します。

アップデート:

未定義の変数の通知を受け取った場合(ちなみに、本番環境でデバッグが0に設定されている場合は表示されません)、必要なのは、コントローラー(ビューではなく)でuploads変数をnullに設定することだけです。検索を実行する前$this->set('uploads', array());に、コントローラーで次の操作を実行して、変数がビューで定義されるようにします。ビューをロジックで乱雑にしたくありません。

于 2012-04-28T20:30:55.313 に答える
0
    <?php if(!empty($uploads)) : ?>
    <?php foreach($uploads as $upload) : ?>  
        <tr>
            <td><?php echo $upload['Upload']['name'] ?></td>
            <td><?php echo $upload['Upload']['eventname'] ?></td>
        </tr>
    <?php endforeach; ?>
    <?php else : ?>

 <div>
   No search matches found
   </div>

     <?php endif; ?>

これにより、空のセットが見つかった場合、検索一致が見つからなかった場合にWebページにスローされます。

于 2012-04-29T10:50:04.330 に答える