2012-02-08 1 views
2

Пытается катализировать некоторые прототипы страниц с полями формы. Мой контроллер Catalyst, похоже, не получает входные данные из формы, когда он отправлен.

Я попытался уменьшить шаблон & контроллер, насколько я могу, и я все еще получаю эту проблему.

шаблон просто:

<body> 
    <form action="/minimal-testing" method="get"> 
      <select id="select02"> 
      <option value="cat1">cat1</option> 
      <option value="cat2">cat2</option> 
      </select> 
      <select id="select06"> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      </select> 
     <input type="submit" value="submit" title="submit" /> 
    </form> 
    <p> Hello, params says: </p> 
    <p> 
     [% FOR param IN params ; param.key ; ' = ' ; param.value; END %] 
    </p> 
</body> 

Контроллер:

sub minimal_testing :Path('minimal-testing') :Args(0) { 
    use Data::Dumper; 
    my ($self, $c) = @_; 
    $c->stash(params=>$c->req->params); 
    $c->stash(template => "dynamic/minimal-testing.tt"); 
    $c->log->debug(Dumper($c->request->params)); 
} 

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

[debug] $VAR1 = {};

Очевидно, что мне не хватает чего-то столь очевидного Я просто не вижу этого ... пожалуйста, просветите меня.

ответ

2

Вы мертвы правильно. Я подозреваю, что ваш журнал Catalyst должен дать вам понять, что здесь происходит не так. Проблема не в Catalyst.

В принципе, это искаженный HTML-код - для каждого входа в форму требуется параметр name, который может быть передан обратно серверу в POST.

 <select id="select02" name="select02"> 
     <option value="cat1">cat1</option> 
     <option value="cat2">cat2</option> 
     </select> 

id для CSS, name для обработки формы.

Попробуйте это, и вы должны получить войти как:

[11:31:28.499 16014:debug] Body Parameters are: 

.-------------------+----------------------------------------. 
| Parameter   | Value         | 
+-------------------+----------------------------------------+ 
| select02   | cat1         | 
| select06   | 2          | 
'-------------------+----------------------------------------' 

Надежда, что помогает.

+0

Фантастический. Огромное спасибо. Я знал, что это должно быть ослепительно очевидным! С тех пор, как я перепутал с внутренними формами ... «id для CSS, имя для обработки FORM» - я буду помнить эту мантру ;-) – jvector

+0

Добро пожаловать, рад помочь. Вероятно, было бы более точным сказать, что «id предназначен для DOM-манипуляции, имя для обработки FORM». Кстати, вам, возможно, захочется рассмотреть вопрос об ответе - это система SO. веселит. – RET

+0

спасибо за это тоже - сделано. – jvector

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

  • Нет связанных вопросов^_^