LINUX.ORG.RU

Symfony 1.4 - изменить имя загружаемого файла

 


0

1

Вроде бы просто. Полно мануалов. Даже на русском: http://hudson.su/2010/04/12/file-upload-form-tuning-transliteration-instead-f...

Но вот класс-валидатор мой не загружается. Если я указываю 'validated_file_class' => 'sfValidatedFile', т.е. дефолтное значение, то все отлично. Как только моё - все падает. Из чего делаю вывод что класс просто не находится и не инклюдится. Тем более что даже если туда добавить die('<pre>'.print_r((array)'3,14159265358здец',true).'</pre>'); то ничего не выводится.

Кстати, а почему нет никакого выхлопа ошибок или лога? Это не принято здесь? Или какие-то настройки есть? Проект просто не мой. С симфони впервые работаю.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Кстати, а почему нет никакого выхлопа ошибок или лога?

Ты хоть туториал «как написать блог» с официального сайта прошел до конца, прежде чем браться за реальный код?

Из чего делаю вывод что класс просто не находится и не инклюдится.

разберись как подключаются файлы, модули и всё такое, и сделай чтобы они подключались

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Ты хоть туториал «как написать блог» с официального сайта прошел до конца, прежде чем браться за реальный код?

Нет конечно. Тут на симфони только маленькая часть большого проекта сделана и надо внести несколько правок...

разберись как подключаются файлы, модули и всё такое, и сделай чтобы они подключались

Стиви, ты прочитал что написано? Этот класс по идее автоматом должен поцепится. По крайней мере когда я делаю

 $this->mergePostValidator(new pSetDurationValidator());
это никаких проблем не вызывает и все работает. Когда
$this->setValidator('video', new sfValidatorFile(array(
            'path' => sfConfig::get('app_video_content_folder'),
            'validated_file_class' => 'pValidateVideoFile',
            'required' => false,
            'mime_types' => array('video/x-flv', 'video/mp4', 'video/x-m4v', 'video/3gpp', 'video/quicktime')
        )));
уже ничерта не работает (((

Suntechnic ★★★★★
() автор топика
Последнее исправление: Suntechnic (всего исправлений: 1)
Ответ на: комментарий от stevejobs

а с какой ошибкой падает?

В том-то и дело что с ничего не говорящей:

PHP Fatal error:  Class 'pValidateVideoFile' not found in /var/www/site/web/symfony/validator/sfValidatorFile.class.php on line 167
То что класс не найден я и сам понимаю... Почему он не найден - вот это вопрос.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

У тебя точно есть pValidateVideoFile.class.php?

Он точно устроен по образу и подобию других валидаторов?

Включая то, что правильно отнаследован от extends sfValidatedFile?

Ты его точно-точно импортируешь?

Он точно лежит рядом с другими валидаторами?

Класс точно называется именно так и никак иначе, ты нигде не потерял букву или регистр?

Почему он называется не в соответствии с конвенцией, почему не sfValidateVideoFile?

Этот файл сам по себе работает, если импортировать его куда-нибудь отдельно и сделать экземпляр, там не вылетает никаких ошибок типа «зависимость не найдена», «синтаксическая ошибка», итп?

Этот файл точно-точно-точно не инклудится 2 раза или не совпадает по имени с каким-нибудь другим валидатором?

Вот туториал как писать валидатор: http://symfony.com/legacy/doc/more-with-symfony/1_4/en/05-Custom-Widgets-and-...

Знаешь почему я спрашиваю? Потому что твой вопрос СТРАННЫЙ. Поставь брейкпоинт на 167ю строчку, пройдись по стеку в обратном порядке, найди откуда стартует валидатор. Потом поставь брейкпоинт в эту начальную точку и интерактивно пройдись по стеку вплоть до 167й строчке. Посмотри что есть в локальном контексте, где твой класс выпал из области видимости. Стандартный дебаг. Там же не рандомный «segmentation fault», а конкретно и файл указан, и строчка в нем, и даже причина обрисована... Или с этим есть какие-то проблемы? Дебагер не доходит до sfValidatorFile и вылетает?

stevejobs ★★★★☆
()
Ответ на: комментарий от Suntechnic

Да... Надо походу иногда спать - вот это я затупил - не почистил кэш банально...

Сорри.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

Да, все это точно - 10 раз перепроверил. Ответ вон выше сообщением.

За ссыль на туториал спасибо! Пишу глядя чего тут накодили создатели. Назавается на p* тупо чтобы отличать свои классы от классов создателей, у них кстати тоже префикс другой. Что мне кажется разумным - сразу видно что не стандартный симфоньевский.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

лол. Если будешь когда-нибудь писать под JVM, поробуй заюзать playframework2 - там automatic reloading :)

сразу видно что не стандартный симфоньевский.

ага, но есть плагины, которые грузят классы как sf+имякласса+.class.php, и с ними такое не пройдет :( В symfony2 всякую ересь повыкосили, да и вообще там с импортами более по-человечески, но у тебя же 1.4 и на 2 перейти нереально

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

А что я могу сделать? Эту часть изначально поручили другим людям, потому что верховный главнокомандующий решил, что сил своих не хватит (сейчас даже он думает, что напрасно - могли бы запилить и на том фреймворке на котором основной проект). Они слабали на 1.4 (видимо на том, что знали) до состояния беты (с большой натяжкой) и пропали ((( Никто в команде не знает симфони и жребий пал на меня :'(

Suntechnic ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.