проверка наличия в таблице записей с cakephp - PullRequest
0 голосов
/ 22 марта 2012

Я использую cakephp и пытаюсь проверить, есть ли в таблице введенные данные. Если данных нет, отобразите сообщение «нет данных». Если есть данные, отобразите их.

Я могу нормально отобразить результаты, но я просто не знаю, как сказать CakePHP, чтобы проверить, есть ли какая-либо информация в таблице.

Должна ли я поместить логику для проверки в мою модель и в представление ссылки на эту функцию модели? Я новичок в CakePHP и MVC в целом, поэтому я все еще пытаюсь освоить способ передачи данных.

Edit- Вот мой код для индексного файла. Когда я просто перечислял $ mysorts без функции, я получил следующую ошибку.

Ошибка разбора: синтаксическая ошибка, неожиданный T_VARIABLE, ожидающий T_FUNCTION в ...

<h1>Sorted Entries</h1>
<?php
 echo $this->Html->link("Add List", array('action' => 'add')); 
   if (!empty($mysorts)) {
  ?>
<table>
   <tr>
       <th>ID</th>
       <th>Original</th>
       <th>Sorted</th>
   </tr>

  <?php  foreach ($mysorts as $mysort): ?>
         <tr>
             <td><?php echo $mysort['Mysort']['id']; ?></td>
             <td>
                 <?php echo $mysort['Mysort']['original']; ?>
             </td>
             <td> <?php echo $mysort['Mysort']['sorted']; ?>
             </td>
         </tr>
   <?php endforeach;
         } else {
        echo '<p>No results found!</p>';
        }
   ?>
</table>

А вот и мой контроллер

class MysortsController extends AppController {
  public $helpers = array('Html', 'Form');

  public function index() {
         $this ->set('mysorts', $this->Mysort->find('all'));  

  }

 public function add() {
        if($this->request->is('post')) {
        $this->Session->setFlash('yes');
        $this->redirect(array('action' => 'index'));
        }
 }

 function isempty(){
           $mysorts = $this->Mysort->find('all');
           $this->set('mysorts', $mysorts);
  }
}
?>

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Предполагая

$mysorts = $this->Mysort->find('all');
$this->set('mysorts', $mysorts);

В контроллере, тогда вы можете проверить в представлении:

if (!empty($mysorts) {
    // table and foreach loop
} else {
    echo '<p>No results found!</p>';
}
0 голосов
/ 25 марта 2012

Если вы хотите использовать любой из методов контроллера из вида, вы можете использовать requestAction

$result = $this->requestAction(array(
                                'controller' => 'mycontroller', 
                                'action' => 'action')
                 );   // $result will have return value from your action

echo $this->requestAction(array(
                                'controller' => 'mycontroller', 
                                'action' => 'action'),
                          array('return')
                 );   // will return rendered view

Запрос на действие всегда был предметом споров о том, следует ли его использовать. Некоторые говорят, что использование его с кешем не сильно повлияет на производительность, другие говорят, что иначе. Некоторое время назад я прочитал сообщение, в котором говорилось, что «Действие запроса» не так плохо, как все ожидали.

Тем не менее, избегайте этого. Я бы предпочел ajax-вызов контроллеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...