Comments 12
Подсветку синтаксиса бы, а то код читаь не возможно. Статья полезная занёс в избранное
+1
Интересная заметка, но вот рассширение я бы получал вот так
$ext = pathinfo($file['name'], PATHINFO_EXTENSION);
$ext = pathinfo($file['name'], PATHINFO_EXTENSION);
+3
Спасибо, не знал. Действительно просто.
0
Из мануала:
«pathinfo() возвращает ассоциативный массив, который содержит информацию о пути path. Возвращаемый массив состоит из следующих элементов: dirname, basename и extension.
Вы можете указать, какие элементы будут возвращены при помощи необязательного параметра options. Он состоит из PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION и PATHINFO_FILENAME (появилась в PHP 5.2.0). По умолчанию возвращаются все элементы.»
На всякий случай, если у кого < 5.2.0
«pathinfo() возвращает ассоциативный массив, который содержит информацию о пути path. Возвращаемый массив состоит из следующих элементов: dirname, basename и extension.
Вы можете указать, какие элементы будут возвращены при помощи необязательного параметра options. Он состоит из PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION и PATHINFO_FILENAME (появилась в PHP 5.2.0). По умолчанию возвращаются все элементы.»
На всякий случай, если у кого < 5.2.0
0
> public function __construct($options = null)
Для добавление в форму элементов предусмотрен специальный метод init (изначально он просто пустой), который вызывается в конце конструктора.
> Мы специально не указываем setDestination, потому что будем использовать фильтр Rename.
Если вы не указываете destination явным образом, то форма берёт стандартный tmp путь. И уже потом применяет фильтр rename. Также метод receive уже вызывается один раз в isValid. Поэтому вы можете указать фильтр при создании формы и избежать прямого вызова receive и повторной обработки файла.
И ещё немного непонятна логика: почему в первый раз вы не использовали адаптер напрямую?
Для добавление в форму элементов предусмотрен специальный метод init (изначально он просто пустой), который вызывается в конце конструктора.
> Мы специально не указываем setDestination, потому что будем использовать фильтр Rename.
Если вы не указываете destination явным образом, то форма берёт стандартный tmp путь. И уже потом применяет фильтр rename. Также метод receive уже вызывается один раз в isValid. Поэтому вы можете указать фильтр при создании формы и избежать прямого вызова receive и повторной обработки файла.
И ещё немного непонятна логика: почему в первый раз вы не использовали адаптер напрямую?
0
>И ещё немного непонятна логика: почему в первый раз вы не использовали адаптер напрямую?
Всё очень просто. Я сделал именно так, как это предложено сделать в оффициальном мануале.
$values = $form->getValues();
if ($form->isValid($form->getPost())) {
if (!$form->foo->receive()) {
print «Upload error»;
}
}
Всё очень просто. Я сделал именно так, как это предложено сделать в оффициальном мануале.
$values = $form->getValues();
if ($form->isValid($form->getPost())) {
if (!$form->foo->receive()) {
print «Upload error»;
}
}
0
Вы не совсем поняли мой вопрос. В первом случае у вас вызывается метод receive элемента формы, а во втором от адаптора. Почему именно так? Есть разница в этих методах или метод элемента является проксирующим?
0
Именно так. Метод является проксирующим. Но метод элемента не принимает имя файла в параметре, к которому будет применён метод receive() адаптера, а берёт его getter'ом.
+1
Если не трудно, кому материал показался полезным, помогите перенести в блог Zend Framework, чтобы его было проще найти. Не хватает чуть-чуть.
0
Хорошая статья, мне как раз это надо.
Вопрос такой (на первый взгляд ответ на него мне не очевиден): мне как раз надо принять три файла и записать его в три разных директории, но с одним именем. типа dir1/6.ext, dir2/6.ext, dir3/6.ext (где ext — расширение gif, jpg, png такое, какое закачает пользователь)
Как реализовать такое?
Вопрос такой (на первый взгляд ответ на него мне не очевиден): мне как раз надо принять три файла и записать его в три разных директории, но с одним именем. типа dir1/6.ext, dir2/6.ext, dir3/6.ext (где ext — расширение gif, jpg, png такое, какое закачает пользователь)
Как реализовать такое?
0
Sign up to leave a comment.
Загрузка и переименование файлов