Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Extensions > Формы в Zend Framework


Автор: Darksquall 1.7.2008, 13:42
в контроллере
Код

<?php
class UserController extends Zend_Controller_Action
{
    public function getForm()
    {
        return $form;
    }

    public function indexAction()
    {
        // рендеринг user/form.phtml
        $this->view->form = $this->getForm();
        $this->render('form');
    }

    public function loginAction()
    {
        if (!$this->getRequest()->isGet()) {
            return $this->_forward('index');
        }
        $form = $this->getForm();
        if (!$form->isValid($_GET)) {
            $this->form = $form;
            return $this->render('form');
        }
        $values = $form->getValues();
    }
}
?>


в файле phtml
Код

<?
$form = new Zend_Form();
$form->setAction('/search/')
     ->setMethod('get');
$username = $form->createElement('text', 'text');
$form->addElement($username)
->addElement('submit', 'search', array('label' => 'Искать'));
?>


кнопка есть и он делает все как положено, но я не знаю как передать значение 
не в виде /search/?text=сам текст

а /search/сам текст

роутер есть в Index.php, т.е. файл принимает значения полученные из GET хорошо в таком виде /search/сам текст

но вот как их отправить в таком виде /search/сам текст я не нашел.


И еще не могли бы подсказать как использовать CSS в формах зенда, т.е. мне нужно например изменить вид кнопки и само поле ввода.

Автор: Feldmarschall 1.7.2008, 13:46
А при чем здесь зенд?
Как будто без зенда так можно сделать.
В одном смешном тексте написана очень правильная фраза - прежде, чем требовать что-то от пхп, сделайте это на HTML. Не получилось? Надо было учить HTML лучше. 
такую строку можно сделать только яваскриптом, но сначала надо задаться вопросом, а нужна ли она вообще. особенно - для русского языка, когда в адресе будет %ab%cd%ef

Автор: Darksquall 1.7.2008, 20:20
Пробовал обычным HTML есть форма и кнопка, но не отдает ничего ни по POST ни по GET, может это связано с наличием роутера как то?

ява скриптом можно получить значение поля и отправить по href но это не подойдет, т.к. хотелось бы заодно понять как работает это в ZEND и пользоваться POST в будущем

Автор: Feldmarschall 1.7.2008, 21:20
Еще раз. Из букваря по веб-программированию. Форму у тебя отправляет браузер. Никакого РНР, никакого зенда, и никаких фреймворков у тебя в браузере нету. Формы работают не в зенд, а браузере. Форма может сформировать из введенных данных только квери стринг, а не путь к скрипту. Ни в будущем, ни в последующем, у тебя средствами зенд сделать такой адрес не получится. потому что адрес формирует браузер. 
Я понятно объясняю?

Автор: Darksquall 2.7.2008, 09:35
Пример покажи работающий, я тебе говорю что хочу научится делать формы в зенде, а ты мне про букварь.

Автор: Feldmarschall 2.7.2008, 09:39
В букваре написано, что такой пример сделать невозможно.
Если ты до сих пор этого не понял.

Букварь нужно читать обязательно. Без него никуда. 
Сначала - букварь, потом - зенд фреймворк. А не наоборот. 
Потому что иначе получаются вопросы, как у тебя.

Автор: Fortop 2.7.2008, 11:13
Darksquall, 
Код

    public function getForm()
    {
        return $form;
    }

Подскажи, что по-твоему, оно возвращает?

Добавлено через 56 секунд
Это при том, что сама форма формируется у тебя во view, а не в controller.

Автор: Darksquall 2.7.2008, 11:18
Этот кусок должен быть в контроллере, это да, 
Но должен же он отдавать данные в строку браузера, зенд ведь формирует обычный HTML, 
Fortop т.е. он не отдает чтоли?

Код

$form = new Zend_Form();
$form->setAction('/search/')
     ->setMethod('get');
$username = $form->createElement('text', 'text');
$form->addElement($username)
->addElement('submit', 'search', array('label' => 'Искать'));



Автор: Darksquall 2.7.2008, 13:22
роутер мешал обычной HTML форме, но в принципе это мне и не нужно было, хотелось разобраться как же в самом зенде это сделать

Автор: Fortop 2.7.2008, 15:25
Darksquall, 
getForm() у тебя вообще ничего не возвращает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)