سؤال

أنا أستخدم وحدة تحكم الحساب التي لا تحتوي على جدول خاص بها ولكنها تستخدم نموذج المستخدم.

كل شيء يعمل بشكل جيد باستثناء - عندما أتحقق من صحة أي شكل. يقول إن التحقق من الصحة يفشل (عندما أحاول أن تفشل في التحقق من الصحة) ولكن لا يرمي الخطأ أسفل الحقل

رأي

<?php echo $this->Form->input('id'); ?>
              <label for="UserPassword">New Password:</label>
              <?php echo $this->Form->text('password', array('type' => 'password', 'value' => 'harsha')); ?><em>Password must be min 6 characters.</em> <?php echo $form->error('password'); ?>

عمل تحكم

            if($this->User->saveField('password', $this->data['User']['password'], array('validate' => 'first'))) {
                $this->Session->setFlash('Password has been changed.', 'flash-success');
            } else {
                $this->Session->setFlash('There was some problem with our system. Please try after some time.', 'flash-warning');
            }
هل كانت مفيدة؟

المحلول

محاولة debug()جي محتويات $this->validationErrors في رأيك ، وكذلك $this->data في وحدة التحكم الخاصة بك بعد تقديم النموذج. هذا يجب أن يمنحك المزيد من المعلومات للعمل منها.

أظن أن مشكلتك هي أن الكعكة تقوم ببناء مدخلات النماذج بناءً على النموذج الخاطئ - حقول بناء النماذج Account.id و Account.password بدلاً من User.id و User.password. هذا بسبب FormHelper يأخذ نموذجه الافتراضي من وحدة التحكم/العرض الذي تم استدعاؤه منه ، والذي يظهر في حالتك AccountsController.

من أجل توليد User.id و User.password الحقول تتوقع معالجة تقديم وحدة التحكم الخاصة بك ، ستحتاج إلى إعداد User. في الخاص بك FormHelper المكالمات. هكذا:

$this->Form->input('User.id');
$this->Form->text('User.password');

نصائح أخرى

هل جربت:

echo $session->flash();

لاحظ أنه مهما كان الدليل ، فإنه يعود ، وليس أصداء. لقد قمت بتسجيل هذا الوقت مرة أخرى وتم تغييره في دليل 1.3 ، ولكن ليس 1.2.

مرحبا أنت من يسأل
إذا كنت ترغب في إظهار رسائل الخطأ التي تعود من التحقق من صحة Usermodel
حتى تتمكن من إضافة رمز السطر ،

  <?php 
      if ($this->Form->isFieldError('password')) { 
       echo $this->Form->error('password', array('class' => 'error')); 
    ?>

وإذا كنت ترغب في إظهار طريقة الخطأ التي تم تعيينها بواسطة Method Setflash
يجب إعادة توجيه الصفحة ثم استخدام $ this-> session-> flash ('flash-name') في الصفحة التي تريد عرضها

   <?php
    //in UsersController
    $this->Session->setFlash('message here', 'flash-name');
    //in view
    echo $this->Session->flash('flash-name');
   ?>

حظا طيبا وفقك الله!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top