我正在使用Laravel构建一个PHP Web应用程序,并试图将名称和电子邮件从表单传递到我的数据库,但是它显示以下错误:
致命错误:未捕获的错误:在“类”中找不到“用户” C:\ xampp \ htdocs \ MVC \ app \ controller \ home.php:20堆栈跟踪:#0 C:\ xampp \ htdocs \ MVC \ app \ core \ app.php(43):home-> create('hala', 'hala @ yahoo')#1 C:\ xampp \ htdocs \ MVC \ public \ index.php(4): app-> __ construct()#2 {main}被抛出 C:\ xampp \ htdocs \ MVC \ app \ controller \ home.php在第20行
这是我用于主页的代码:
class home extends controller
{
public function index($name = '')
{
$this->view('home/index', ['name'=>$user->name]);
}
public function create($username = '', $email = '')
{
user::create([
'username' => $username,
'email'=> $email
]);
}
}
和模型:
use Illuminate\Database\Eloquent\Model as Eloquent;
class user extends Eloquent
{
public $name;
protected $fillable = ['username','email'];
}
我在做什么错,我该如何解决?
答案 0 :(得分:2)
在控制器代码中,您需要包括user
类:
require_once("user.class.php"); /* or whatever the file is named */
如果这是自动完成的,并且该类位于另一个名称空间中,则需要声明要在控制器中使用它的意图:
use \my\namespace\user;
或者仅在代码中使用完全限定的类名:
\my\namespace\user::create();
答案 1 :(得分:1)
如果您使用illuminate/database
,那么您可能正在使用作曲家。为什么不添加PSR-4自动加载规则并相应地构建代码。例如。 composer.json
可能看起来像这样:
{
"name": "acme/acme",
"description": "Acme is this and that",
"type": "project",
"require": {
"php": "^7.2",
"illuminate/database": "^5.7"
},
"autoload": {
"psr-4": {
"Acme\\": "src"
}
},
"license": "proprietary"
}
运行composer install
使您成为vendor/autoloader.php
,这是您唯一需要的文件。您将自己的代码放在Acme
(或任何选择的名称空间)中。例如。您将用户模型放在src/Model/User.php
下并添加名称空间:
<?php
namespace Acme\Model;
use Illuminate\Database\Eloquent\Model as Eloquent;
class User extends Eloquent
{
public $name;
protected $fillable = ['username','email'];
}
您的主文件可能看起来像这样。
<?php
// entry point file
require_once('vendor/autoload.php');
use Acme\Model\User;
$user = new User();
// ...
很显然,您会在某个类中做出大多数逻辑,所以这应该很短。
这对于从事最新项目的人们来说似乎很明显,但是我看到太多的项目仍然具有静态文件,其中包括像以前一样的所有类。现在将您的项目移至2010年代!