2014-10-24 2 views
1

Я пытаюсь включить пользовательский определенный файл проверки, который является локальным для моей системы, и хотел бы использовать его с «пакетными» файлами из приложения, загруженного через Интернет , Целью является то, что у меня могут быть собственные пользовательские валидаторы, так как я вносил изменения в это приложение.Laravel 4 PHP: инструкция «Использовать» как с локальными файлами, так и с файлами пакетов

я получаю ошибку - Модели> 'класс '\ валидаторов \ Фото' не найден'

Контроллер:

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 -> Путь к файлу: Модели \ Validators \ Photo.php

namespace Models\Validators; 

class Photo extends Validator { 

public static $rules = array(
     'album_id' => 'required', 
     'photo_name' => 'required', 
     'photo_description' => 'max:255', 
    ); 
} 

Является ли это просто вопрос Пространства имен?

ответ

1

Наиболее вероятная проблема заключается в том, что композитор не добавляет файл Models/Validators/Photo.php в индекс автозагрузки. Убедитесь, что вы указали правильный путь для своих файлов в composer.json.

+0

В моем файле composer.json, на самом деле я определил в своем индексе «автопортрет/модель» автозагрузки, в котором живет «Модели/Валидаторы/Фото.php». Раньше я пытался использовать «php artisan dump-autoload», но ничего не сделал. Я немного неохотно использую «компоновщик-автозагрузка», потому что я не хочу, чтобы он «отменил» любые изменения, которые я сделал. –

+0

По вашему предложению я создал новый локальный каталог под названием «приложение/валидаторы» и разместил там файлы пользовательской проверки. В моих пользовательских файлах проверки мне пришлось добавить вверху каждого файла «приложение для пространства имен \ валидаторы». После написания этой команды я вошел в Putty и набрал «php artisan dump-autoload», и моя проверка теперь работает. Спасибо за ваше предложение! –

+1

На самом деле, почему это не работает в 'app/models', потому что композитор не ищет совпадений PSR-0' в каталоге. Он ищет только прямые файлы (что означает не рекурсивно), который содержит класс с тем же именем, что и файл. Если вы добавите объект 'PSR-0' или' PSR-4' в массив автозагрузки композиторов и переместите 'app/models' в него, вероятно, будут работать предыдущие местоположения. Но папка 'app/validator' имеет смысл. – Hkan

1

Попробуйте запустить

composer dump-autoload 

, чтобы восстановить файлы автозагрузки.

+0

Я фактически использовал 'php artisan dump-autoload' вместо 'composer dump-autoload', так как это было безопаснее для меня. Я действительно узнал, что это была проблема с именами и «класс автозагрузки». Спасибо за ваше предложение! –

Смежные вопросы