Laravel 9.x 联系表无法连接到 class
Laravel 9.x Contact form can't connect to class
我正在尝试制作联系表。主要思想是用户发送数据,我将数据保存到数据库,我从数据库中获取数据,我将数据作为电子邮件发送。
我正在学习教程 -> https://www.positronx.io/laravel-contact-form-example-tutorial/
当我试图访问我的控制器上的 classes 时,它找不到它。
Controller says this
But I have the file here
当我 运行 我有这个代码时 ->
Cannot instantiate abstract class Illuminate\Database\Eloquent\Model
ContactUsFormController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use app\Models\Contact;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Mail;
class ContactUsFormController extends Controller
{
//create contact form
public function createForm(Request $req){
return view('contact');
}
//store contact form data
public function ContactUsForm(Request $req){
//form validation
$this->validate($req,[
'name' => 'required',
'email' => 'required | email',
'subject' => 'required',
'message' => 'required'
]);
//store data in database
Model::create($req->All());
//send mail to admin
Mail::send('mail',array(
'name' => $req->get('name'),
'email' => $req->get('email'),
'subject' => $req->get('subject'),
'message' => $req->get('message')
),function($message) use ($req){
$message->from($req->email);
$message->to('MyMail@example.com','admin')->subject($req->get('subject'));
});
return back()->with('success', 'We have recieved your message');
}
}
这个让我思考。在教程中,他没有将任何代码写入此文件,但仍然从那里调用 class。
app\Mails\contact.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class contact extends Mailable
{
use Queueable, SerializesModels;
public function __construct()
{
//
}
public function build()
{
return $this->view('view.name');
}
}
app\Models\Contact.php
namespace App\Mail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
use HasFactory;
public $fillable = ['name', 'email', 'subject', 'message'];
}
我有错字吗?我缺少什么?
对不起,我是初学者
你称之为Model::create();
模型的问题只是一个抽象class,而不是你的具体模型
替换
Model::create($req->All());
和
Contact::create($req->All());
同时将联系人模型中的 namespace App\Mail;
更改为命名空间 App\Models;
要了解有关 Mail facade 的更多信息,请查看此
https://laravel.com/docs/9.x/mail#sending-mail
希望有用
我正在尝试制作联系表。主要思想是用户发送数据,我将数据保存到数据库,我从数据库中获取数据,我将数据作为电子邮件发送。
我正在学习教程 -> https://www.positronx.io/laravel-contact-form-example-tutorial/
当我试图访问我的控制器上的 classes 时,它找不到它。
Controller says this
But I have the file here
当我 运行 我有这个代码时 -> Cannot instantiate abstract class Illuminate\Database\Eloquent\Model
ContactUsFormController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use app\Models\Contact;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Mail;
class ContactUsFormController extends Controller
{
//create contact form
public function createForm(Request $req){
return view('contact');
}
//store contact form data
public function ContactUsForm(Request $req){
//form validation
$this->validate($req,[
'name' => 'required',
'email' => 'required | email',
'subject' => 'required',
'message' => 'required'
]);
//store data in database
Model::create($req->All());
//send mail to admin
Mail::send('mail',array(
'name' => $req->get('name'),
'email' => $req->get('email'),
'subject' => $req->get('subject'),
'message' => $req->get('message')
),function($message) use ($req){
$message->from($req->email);
$message->to('MyMail@example.com','admin')->subject($req->get('subject'));
});
return back()->with('success', 'We have recieved your message');
}
}
这个让我思考。在教程中,他没有将任何代码写入此文件,但仍然从那里调用 class。 app\Mails\contact.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class contact extends Mailable
{
use Queueable, SerializesModels;
public function __construct()
{
//
}
public function build()
{
return $this->view('view.name');
}
}
app\Models\Contact.php
namespace App\Mail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
use HasFactory;
public $fillable = ['name', 'email', 'subject', 'message'];
}
我有错字吗?我缺少什么? 对不起,我是初学者
你称之为Model::create();
模型的问题只是一个抽象class,而不是你的具体模型
替换
Model::create($req->All());
和
Contact::create($req->All());
同时将联系人模型中的 namespace App\Mail;
更改为命名空间 App\Models;
要了解有关 Mail facade 的更多信息,请查看此
https://laravel.com/docs/9.x/mail#sending-mail
希望有用