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

#php

#php

Вопрос:

У меня есть несколько таблиц в форме, которая выглядит как этот прототип:

 <tr><td><input type="text" name="directorios_url[]" value="" /></td>
<td><input type="text" name="directorios_kword[]" value="" /></td>
<td><input type="text" name="directorios_link[]" value="" /></td></tr>
  

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

 protected '_directorios' => 
array
  0 => string 'www.test.com/dir' (length=16)
protected '_rssFeeds' => 
array
  0 => string 'www.test.com/rss' (length=16)
etc...
  

прямо сейчас я использую функцию в mapper под названием setOptions, которая выглядит следующим образом:

 public function setOptions(array $options) {
    $methods = get_class_methods($this);
    foreach ($options as $key => $value) {
        //test
        if(preg_match("/[a-zA-Z]_/", $key)){
            $key = substr($key, 0, strpos($key.'_', '_') );
            $method = 'set' . ucfirst($key);
                if (in_array($method, $methods)) {
                    $this->$method($value);
                }
        }else{
        //
            $method = 'set' . ucfirst($key);
                if (in_array($method, $methods)) {
                $this->$method($value);
            }
        }
    }
    return $this;
}
  

Есть идеи о том, как я мог бы получить эти массивы в виде

 protected '_directorios' =>
array
  'directorios_url' 
       array( 0 => 'something.com',
              1 => 'something2.com'),
array
  'directorios_kword'
       array( 0 => 'blah',
              1 => 'blah'),
array 
  'directorios_link'
       array( 0 => 'www.test.com/dir',
              1 => 'www.test2.com/dir')
  

РЕДАКТИРОВАТЬ: для получения дополнительной информации установщики и получатели этой модели имеют общую форму:

 public function setDirectorios($directorios) {
    $this->_directorios = (array) $directorios;
    return $this;
}

public function getDirectorios() {
    return $this->_directorios;
}
  

Комментарии:

1. Передаете ли вы опубликованные данные в setOptions, вот так: $mapper->setOptions(_$POST); ? Если вы хотите опубликовать глубоко вложенный массив данных, попробуйте использовать поля формы, подобные этому: .. name="directorios[url][]".. , .. name="directorios[kword][]"..

2. @Robin да, я делаю что-то подобное. Я попробую ваше предложение прямо сейчас

3. @Robin… защищенный ‘_directorios’ => массив ‘dir_url’ => массив 0 => строка ‘url1’ (длина = 4) 1 => строка ‘url2’ (длина = 4) ‘dir_kword’ => массив 0 => строка ‘kword1’ (длина = 6) 1 => строка ‘kword2’ (длина = 6) ‘dir_link’ => массив 0 => строка ‘link1’ (длина = 5) 1 => строка ‘link2’ (длина= 5) 😀 это сработало! Большое спасибо!