dongzhuandian3292 2018-02-02 13:56
浏览 79
已采纳

在CakePHP中的无模型表单中找不到类ContactForm

I'm using Modelless Form in my application, I followed CakePHP Modelless guid, but i'm having an Error. I tried different methods to figure out the problem but didn't get success, Please help me.

Class 'ContactForm' not found.

showing me error in Controller\ContactController.php, line 20

src/Form/ContactForm.php

<?php

use Cake\Form\Form;
use Cake\Form\Schema;
use Cake\Mailer\Email;
use Cake\Validation\Validator;


class ContactForm extends Form{

    /**
     * _buildSchema is used to define which fields going to use HTML Form
     * created  by FormHelper
     * @param Schema $schema
     * @return $this|Schema
     */
    protected function _buildSchema(Schema $schema)
    {
        return $schema->addField('name','string')
            ->addField('email',['type'=>'string'])
            ->addField('body',['type'=>'text']);
    }

    /**
     *_buildValidator is used to validate rules for our fields
     * to show error to user
     * @param Validator $validator
     * @return $this|Validator
     */
    protected function _buildValidator(Validator $validator)
    {
        return $validator->add('name','length',[
            'rule' => ['minLength', 3],
            'message' => 'Please enter your name'
        ])->add('email','lenght',[
            'rule' => ['minLength',10],
            'message' => 'Please enter your Email id'
        ]);
    }

    /**_email() will send email to us and
     * $email is a boject of email class and we are tell it to use default
     * that we setup in app.php
     * @param array $data
     * @return bool|void
     */
    protected function _execute(array $data)
    {
        $email = new Email();
        $email->setProfile('default');

        $email->setFrom([$data['email']])
            ->setTo('creative.rihan@gmail.com')
            ->setSubject('Sended from Contact us Form')
            ->send([$data['body']]);

        return true;


    }
}

src/Controller/ContactController.php

<?php
namespace App\Controller;


use App\Controller\AppController;
use App\Form\ContactForm;

/**
 * Class ContactController should be the same name as form name
 */

class ContactController extends AppController
{
    /**
     *
     */
    public function index()
    {
        $contact = new ContactForm();  // This is line no 20

        if($this->request->is('post'))
        {
            if($contact->execute($this->request->getData()))    //here execute() will _execute() in ContactForm
            {
                $this->Flash->success('Thank for Contacting us.');

                $this->request->getData('name');
                $this->request->getData('email');
                $this->request->getData('body');
            } else{
                $this->Flash->error('Sorry your message could not be send');
            }

        }
        $this->set('contact',$contact);
    }
}

src/Template/Contact/index.ctp

<?php

?>


<div class="contact form large-12 medium-12 columns content">
    echo $this->Form->create($contact);

    <legend><?= __('Contact Us') ?></legend>
    <fieldset>
        <?php
        echo $this->Form->control('name');
        echo $this->Form->contorl('email');
        echo $this->Form->control('body');
        ?>
    </fieldset>
    <?= $this->Form->button(__('Submit')) ?>
    <?= $this->Form->end(); ?>
</div>
  • 写回答

1条回答 默认 最新

  • doucuodan0897 2018-02-02 16:19
    关注

    You forgot to give a namespace to your Form.
    Your file src/Form/ContactForm.php should start like this:

    <?php
    namespace App\Form;
    
    use Cake\Form\Form;
    use Cake\Form\Schema;
    use Cake\Mailer\Email;
    use Cake\Validation\Validator;
    
    
    class ContactForm extends Form {
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题