Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Значение элемента массива как имя переменой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Telnet
Отправлено: 17 Апреля, 2014 - 09:32:06
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




Всем привет

Есть такой вот не большой массив
PHP:
скопировать код в буфер обмена
  1.  
  2.         public $rules = array(
  3.                 array(
  4.                         'field' => 'title',
  5.                         'type'  => 'text',
  6.                         'label' => 'Заголовок',
  7.                         'rules' => 'required|max_length[255]'
  8.                 ),
  9.                 array(
  10.                         'field' => 'hash',
  11.                         'type'  => 'text',
  12.                         'label' => 'Цвет',
  13.                         'rules' => 'required|max_length[7]'
  14.                 ),
  15.  

он описывает поля формы там и не которые ее правила валидации, а так же имя поля формы и лайбл этого поля
при обработке этого массива желательно сделать так что я мог использовать для подстановки ранее заполненных полей имена переменных которые у меня называются так же как и $rule['field']. в функцию .set_value($rule['field'],$rule['field'])
Я пытался написать так
.set_value($rule['field'],{$rule['field']})
пишет ошибка синтаксиса.
Может кто нить подскажет как быть
внизу код самих функций где я это использую, что б лучше понять зачем это нужно
PHP:
скопировать код в буфер обмена
  1.  
  2.         function make($rules){
  3.                 $rules = $rules;
  4.                 $html = '';
  5.                 foreach($rules as $rule){
  6.                         switch ($rule['type']){
  7.                                 case 'text':
  8.                                 $html .= text($rule);
  9.                                 echo htmlspecialchars($html);die();
  10.                                 break;
  11.                                 case 'checkbox':
  12.                                 $html .= checkbox($rule);
  13.                                 break;
  14.                                 case 'textarea':
  15.                                 $html .= text($rule);
  16.                                 break;
  17.                         }
  18.                 }
  19.         }
  20.        
  21.         function text($rule){
  22.  
  23.                 return '<tr>'.
  24.                         '<td><span class="tdCaption"><strong>'.$rule['label'].'*</strong></span></td>'.
  25.                         '<td>'.
  26.                                                 '<input type="text" name="'.$rule['field'].'" value="'.set_value($rule['field'],$rule['field']).'"  />'.
  27.                                                 '<strong>'.form_error($rule['field']).'</strong>'.
  28.                                         '</td>'.
  29.                     '</tr>';
  30.         }
  31.  
 
 Top
EuGen Администратор
Отправлено: 17 Апреля, 2014 - 09:51:27
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Что такое set_value?
Почему правила валидации не в виде хотя бы массива, например,

PHP:
скопировать код в буфер обмена
  1. 'rules' => array(
  2.    'required' => true,
  3.    'max_length' => 255
  4. )
  5. //...


Для чего нужна функция text() - обычный рендеринг? Тогда почему отрисовка поля включает в себя элементы внешнего форматирования (таблицы)?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Telnet
Отправлено: 17 Апреля, 2014 - 09:53:58
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




EuGen пишет:
Что такое set_value?
Почему правила валидации не в виде хотя бы массива, например,

PHP:
скопировать код в буфер обмена
  1. 'rules' => array(
  2.    'required' => true,
  3.    'max_length' => 255
  4. )
  5. //...


Для чего нужна функция text() - обычный рендеринг? Тогда почему отрисовка поля включает в себя элементы внешнего форматирования (таблицы)?


Это я пытаюсь модить CodeIgniter

что б можно было в модели там где правила валидации задаются и поля для генерации форм сразу описать
а правила валидации там задаются через знак | а не в массиве

но суть не в том этот массив мы уже получили в вид и теперь нам нужно из него построить поля
функция устанавливает ранее введенные значение это первый аргумент, а второй как раз тот что нам нужно указать получается из базы если ранее эту форму сохраняли
но суть не в этом
нужно как то значение 'field' => 'title', сделать так что у нас в итоге получилась переменая с именем $title

(Отредактировано автором: 17 Апреля, 2014 - 09:59:05)

 
 Top
LIME
Отправлено: 17 Апреля, 2014 - 10:15:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а у меня вопросы по make
какая магия заключена в строчке $rules = $rules;
и где ретурн?...мне без него беспокойно )
(Добавление)
и смотрим почему нельзя $rule['field'] передавать в set_value
 
 Top
Telnet
Отправлено: 17 Апреля, 2014 - 10:36:25
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




LIME пишет:
а у меня вопросы по make
какая магия заключена в строчке $rules = $rules;
и где ретурн?...мне без него беспокойно )
(Добавление)
и смотрим почему нельзя $rule['field'] передавать в set_value


Магии ни какой просто мой тупеж Не понял

в CodeIgniter оказалось что можно эти переменные которые берутся из базы передать массивом через
$htmlForm->makeTable($rules,$this->load->_ci_cached_vars);
Весь код функции если кому интересно стал таким
Всем спасибо за помощь
PHP:
скопировать код в буфер обмена
  1.  
  2.         public function makeTable($rules,$values){
  3.  
  4.                 $html  = '<table class="table">';
  5.                 foreach($rules as $rule){
  6.                         switch ($rule['type']){
  7.                                 case 'text':
  8.                                 $html .= $this->text($rule,@$values[$rule['field']]);
  9.                                 break;
  10.                                 case 'checkbox':
  11.                                 $html .= $this->checkbox($rule,@$values[$rule['field']]);
  12.                                 break;
  13.                                 case 'textarea':
  14.                                 $html .= $this->text($rule,@$values[$rule['field']]);
  15.                                 break;
  16.                         }
  17.                 }
  18.                 $html  .= '</table>';
  19.                 return $html;
  20.         }
  21.        
  22.         protected function text($rule,$value){
  23.                 return '<tr>'.
  24.                         '<td><span class="tdCaption"><strong>'.$rule['label'].'*</strong></span></td>'.
  25.                         '<td>'.
  26.                                                 '<input type="text" name="'.$rule['field'].'" value="'.set_value($rule['field'],@$value).'"  />'.
  27.                                                 '<strong>'.form_error($rule['field']).'</strong>'.
  28.                                         '</td>'.
  29.                     '</tr>';
  30.         }
  31.         protected function checkbox($rule){
  32.                 (set_value($rule['field'],@$value) == 1) ?  $checked['status'] = ' CHECKED ' : $checked['status'] = '';
  33.                 return '<tr>'.
  34.                         '<td><span class="tdCaption"><strong>'.$rule['label'].'*</strong></span></td>'.
  35.                         '<td>'.                                
  36.                                                 '<label class="checkbox">'.
  37.                                                   '<input type="checkbox" name="'.$rule['field'].'" value="1" '.$checked['status'].'> Включен?'.
  38.                                                 '</label>'.
  39.                                         '</td>'.
  40.                     '</tr>';   
  41.         }
  42.         protected function textarea($rule){
  43.         }
  44.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB