2010-04-11 4 views
2

Для тех из вас, кто, возможно, читал это раньше, я провел небольшое исследование и полностью обновил свой вопрос. У меня возникла проблема с тем, что мои запросы формы получают черную черту компонентом Security, хотя все работает нормально, когда компонент безопасности отключен. Я проследил его до одной строки в форме:CakePHP 1.26: ошибка в компоненте «Безопасность»?

<?php echo $form->create('Audition');?> 
    <fieldset> 
     <legend><?php __('Edit Audition');?></legend> 
    <?php 
     echo $form->input('ensemble'); 
     echo $form->input('position'); 
     echo $form->input('aud_date'); 
     // The following line works fine... 
     echo $form->input('owner'); 
     // ...but the following line blackholes when Security included 
     // and the form is submitted: 
     // echo $form->input('owner', array('disabled'=>'disabled'); 
    ?> 
    </fieldset> 
<?php echo $form->end('Submit');?> 

(я закомментированный обижая линию для ясности) Я думаю, что я следую правилам, используя форму помощника; насколько я могу судить, это ошибка в компоненте Security, но я слишком много знаю CakePHP n00b, чтобы точно знать. Я хотел бы получить некоторые отзывы, и если это реальная ошибка, я отправлю ее команде CakePHP. Мне также было бы интересно узнать, не просто ли я просто тупой и чего-то здесь не хватает.

(извините обратиться комментарии здесь, но у меня не было достаточно места для них в комментариях)

UPDATE: Спасибо Jesh, вы на 100% правы - «входное значение будет не представляется, когда он отключен ». Я даже посмотрел его на the official HTML spec, где он говорит: «[Отключенный элемент] не может принимать пользовательский ввод, и его значение не будет представлено с помощью формы». Но Cake IS, представляя ценность с помощью формы! Когда я отключу использование компонента безопасности, я могу посмотреть данные POST, отправленные с формой, и, конечно же, поле «владелец» было отправлено! К сожалению, это именно то поведение, которое я хотел, но он, похоже, не согласен с официальной спецификацией HTML ... поэтому я думаю, что это ошибка со стандартным помощником формы. Я сообщу об этом команде CakePHP как об ошибке, но я бы хотел услышать от всех, кто может подтвердить или опровергнуть это.

Также, Jesh, ваша идея использовать безопасный ключ и установить его в false работает отлично, но я действительно НЕ ХОЧУ оставить это поле незащищенным (на самом деле, я ОСОБЕННО не хочу оставлять это поле незащищенным), и мне кажется, что я не должен этого делать. Фактически, теперь я думаю, что это также может быть ошибкой в ​​компоненте Security; Я с помощью FormHelper для создания моих форм здесь - так что компонент безопасности не сможет справиться с этим?

@Miles: ваше решение отлично работает - спасибо! Но он по-прежнему оставляет те же вопросы, которые я поднимал выше.

ответ

1

Ну, входное значение не будет отправлено, если оно отключено. Но поскольку вы выводите поле с помощью FormHelper Cakephp, SecurityComponent ожидает, что входное значение должно быть указано в массиве Controller->data, иначе оно будет черным вашим запросом.

Попробуйте добавить secure ключ в форму options array и установите его в false.

1

Добавьте это в ваш beforeFilter():

$ this-> Безопасность-> disabledFields = массив ('владельца');

0

Вы можете использовать readonly вместо disabled в форме. Это подходит для меня. Disabled является черным отверстием намеренно.

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