Pull to refresh

Comments 12

Подсветку синтаксиса бы, а то код читаь не возможно. Статья полезная занёс в избранное
Интересная заметка, но вот рассширение я бы получал вот так
$ext = pathinfo($file['name'], PATHINFO_EXTENSION);
Спасибо, не знал. Действительно просто.
Ну и небольшое замечание по-поводу split:
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
Из мануала:

«pathinfo() возвращает ассоциативный массив, который содержит информацию о пути path. Возвращаемый массив состоит из следующих элементов: dirname, basename и extension.

Вы можете указать, какие элементы будут возвращены при помощи необязательного параметра options. Он состоит из PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION и PATHINFO_FILENAME (появилась в PHP 5.2.0). По умолчанию возвращаются все элементы.»

На всякий случай, если у кого < 5.2.0
> public function __construct($options = null)
Для добавление в форму элементов предусмотрен специальный метод init (изначально он просто пустой), который вызывается в конце конструктора.

> Мы специально не указываем setDestination, потому что будем использовать фильтр Rename.
Если вы не указываете destination явным образом, то форма берёт стандартный tmp путь. И уже потом применяет фильтр rename. Также метод receive уже вызывается один раз в isValid. Поэтому вы можете указать фильтр при создании формы и избежать прямого вызова receive и повторной обработки файла.

И ещё немного непонятна логика: почему в первый раз вы не использовали адаптер напрямую?

>И ещё немного непонятна логика: почему в первый раз вы не использовали адаптер напрямую?

Всё очень просто. Я сделал именно так, как это предложено сделать в оффициальном мануале.

$values = $form->getValues();

if ($form->isValid($form->getPost())) {
if (!$form->foo->receive()) {
print «Upload error»;
}
}
Вы не совсем поняли мой вопрос. В первом случае у вас вызывается метод receive элемента формы, а во втором от адаптора. Почему именно так? Есть разница в этих методах или метод элемента является проксирующим?
Именно так. Метод является проксирующим. Но метод элемента не принимает имя файла в параметре, к которому будет применён метод receive() адаптера, а берёт его getter'ом.
На мой взгляд, намного лучше, когда имеется единообразие (можно будет принять более высокий уровень абстракции в будущем). Поэтому абсолютно с вами согласен, что лучше использовать несколько элементов типа file, чем один совместно с setMultiFile.
Если не трудно, кому материал показался полезным, помогите перенести в блог Zend Framework, чтобы его было проще найти. Не хватает чуть-чуть.
Хорошая статья, мне как раз это надо.
Вопрос такой (на первый взгляд ответ на него мне не очевиден): мне как раз надо принять три файла и записать его в три разных директории, но с одним именем. типа dir1/6.ext, dir2/6.ext, dir3/6.ext (где ext — расширение gif, jpg, png такое, какое закачает пользователь)

Как реализовать такое?
Sign up to leave a comment.

Articles