Сообщения об ошибках проверки CakePHP 2 не отображаются

Вот моя модель Contacts.php

<?php

App::uses('AppModel', 'Model');
App::uses('Validation', 'Utility');

/**
 * Base Application model
 *
 * @package  Croogo
 * @link     http://www.croogo.org
 */
//$validate = new Validator();
//             'alphaNumeric' => array(
//             'required' => true,
//             'allowEmpty' => false,


class Contacts extends AppModel {
    var $name = 'Contacts';
    var $useTable = false;

    var $validate = array(
        'ContactsAddress' => array(
             'rule' => 'notEmpty',
             'required' => true,
             'message' => 'The address is required'),
        'ContactsEmail' => array(
                  'rule' => array('email', true),
                  'required' => true,
                  'message' => 'A valid email is required'
              ),
        'ContactsPhone' => array(
                 'rule' => array('phone', null, 'us'),
                 'message' => 'A valid phone numbe is required'
             ) 
    );
    //}
}

ContactsController.php

App::uses('AppController', 'Controller');
App::uses('Validation', 'Utility');

class ContactsController extends AppController {
  public $helpers = array('Form', 'Html', 'Session', 'Js', 'Time');
  public $uses = array('Contacts');
/**
 * This controller does not use a model
 *
 * @var array
 */
    //public $uses = array();
//public $uses = array('Contact');
//use  Cake\Validation\Validator;
/**
 * Displays a view
 *
 * @return void
 * @throws NotFoundException When the view file could not be found
 *  or MissingViewException in debug mode.
 */
  public function index() {
    $this->Contacts->set($this->request->data);
    if($this->request->is('post')) {
       //if ($this->Contact->validation()) {
      if ($this->Contacts->validates()) {
      //    return 
          $this->Contacts->save();
          $this->redirect('/contacts/confirm');
      }  else {
CakeLog::write('debug', 'ErrorCheck');
 //      $errors = $this->Contacts->validationErrors;

        //$this->Session->setflash($this->Contacts->validationErrors);
        //$this->redirect('/contacts');
//CakeLog::write('debug', $errors['ContactsAddress'][0]);
// Debugger::dump($errors);
         }
      }
    }

файл представления index.ctp

<!--Navigation Background Part Starts -->
<div id="navigation-bg">
    <!--Navigation Part Starts -->
    <div id="navigation">
        <ul class="mainMenu">
            <li><a href="/"  title="Home">Home</a></li>
            <li><a href="about" title="About">About</a></li>
            <li class="noBg"><a href="contact" class="selectMenu" title="Contact">Contact</a></li>
        </ul>
        <a href="contact" class="signup" title="APPOINTMENT"></a>
        <br class="spacer" />
    </div>
    <!--Navigation Part Ends -->
</div>
<div id="ourCompany-bg">
<div class="requestForm">
<p class="formHeader">Meeting Location</p>
<?php echo $this->Form->create(false); ?>
<!--, array('url' => false)--> 
<!-- array('action' => 'confirm'))); ?> -->
<?php //echo $this->Form->create(false, array('url' => array('action' => 'index'))); ?>
<?php $today = date('d')+1; ?>
<?php $formmonth = date('m'); ?>
<?php echo $this->Form->input('name', array( 
'label' => array('text' => 'Name:  '))); ?>
<span class="errorMessage"> <?php //echo $this->validationErrors['Contacts']['ContactsAddress'][0];?></span>
<?php echo $this->Form->input('address', array(
'label' =>  array('text' => 'Address of meeting:  '))); ?>
<?php CakeLog::write('debug', $this->validationErrors['Contacts']['ContactsAddress'][0]); ?> 

как вы видите, я пробовал много разных вещей. Я пытался выяснить это в течение нескольких недель без какого-либо прогресса.

Я был бы признателен за любой свет, который кто-то мог бы пролить на мою делимму

1 ответ

По -видимому, одним из наиболее важных факторов является наличие имени модели в качестве первого атрибута в Form->create. Так как я не хотел публиковать в базе данных, я использовал false, который я по ошибке думал, что обновление SQL не требовалось. Как только я поставил название модели в качестве первого атрибута, она работала так, как описано в документации. Способ проверки без базы данных - поместить в модель значение $userTable=false.

Надеюсь, это кому-нибудь поможет.

Другие вопросы по тегам