Laravel 4 PHP:';使用';包含本地文件和包文件的语句
我正在尝试包含一个自定义的验证文件,该文件是我的系统的本地文件,并希望与我在线下载的应用程序中的“包”文件一起使用。这样做的目的是,我可以有自己的自定义验证器,因为我修改了这个应用程序 我一直收到错误->“类”模型\验证程序\照片“未找到” 控制器:Laravel 4 PHP:';使用';包含本地文件和包文件的语句,php,laravel-4,Php,Laravel 4,我正在尝试包含一个自定义的验证文件,该文件是我的系统的本地文件,并希望与我在线下载的应用程序中的“包”文件一起使用。这样做的目的是,我可以有自己的自定义验证器,因为我修改了这个应用程序 我一直收到错误->“类”模型\验证程序\照片“未找到” 控制器: use JeroenG\LaravelPhotoGallery\Controllers\AlbumsController; /* From Package */ use JeroenG\LaravelPhotoGallery\Controll
use JeroenG\LaravelPhotoGallery\Controllers\AlbumsController; /* From Package */
use JeroenG\LaravelPhotoGallery\Controllers\PhotosController; /* From Package */
use JeroenG\LaravelPhotoGallery\Models\Album; /* From Package */
use JeroenG\LaravelPhotoGallery\Models\Photo; /* From Package */
use Models\Validators as Validators; /* Custom local file */
class EditPhotosController extends PhotosController {
public function __construct()
{
parent::__construct();
}
public function update($albumId, $photoId)
{
$input = \Input::except('_method');
$validation = new Validators\Photo($input); // Here's where error occurs
/* Validation check and update code etc. */
}
}
}
Photo.php->文件路径:Models\Validators\Photo.php
namespace Models\Validators;
class Photo extends Validator {
public static $rules = array(
'album_id' => 'required',
'photo_name' => 'required',
'photo_description' => 'max:255',
);
}
这只是一个简单的名称空间问题吗?最可能的问题是composer没有将文件
Models/Validators/Photo.php
添加到自动加载索引中。确保在composer.json中为文件提供了正确的路径
尝试运行
composer dump-autoload
重新生成自动加载文件。在我的composer.json文件中,我实际上在我的自动加载索引“app/models”中定义了“models/Validators/Photo.php”所在的位置。我之前尝试过使用“php artisan dump autoload”,但没有任何效果。我有点不愿意使用“composer dump autoload”,因为我不希望它“撤消”我所做的任何更改。根据你的建议,我创建了一个名为“app/validators”的新本地目录,并将自定义验证文件放在其中。在自定义验证文件中,我必须在每个文件的顶部添加“namespace app\validators;”。编写完这个命令后,我进入Putty并键入“php artisan dump autoload”,我的验证现在可以工作了。谢谢你的建议!实际上,它在
app/models
中不起作用的原因是composer没有在目录中查找PSR-0
匹配项。它只查找包含与file同名的类的直接文件(这意味着不递归)。如果将PSR-0
或PSR-4
对象添加到Composer自动加载数组中,并将app/models
移动到其中,以前的位置可能会起作用。但是app/validator
文件夹更有意义。我实际上使用了“php artisan dump autoload”而不是“composer dump autoload”,因为它对我更安全。事实上,我发现这是一个名称空间和“类自动加载”的问题。谢谢你的建议!