Как присвоить полю значение по умолчанию через template.php (Помогите пожалуйста!)

Аватар пользователя demart demart 12 января 2013 в 4:35

Доброго Вам времени суток, необходимо присвоить определенному полю формы добавления ноды значение по умолчанию через template.php, но не просто значение а php код который будет ловить значение с тплки другого материала.

Код (в котором я кстати не могу никак правильно исправить синтаксис):

function hook_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'otvet-node-form') {
      $form['field_o_vopros']['#default_value']='<?php =isset($_POST['question']) ? $_POST['question'] : '' ?>';
  }
}

Кнопка отправляющая значение:

<form action="http://example.com/node/add/otvet" method=post name=formaQ>
<input type=hidden name=question value="<?php print $node->nid; ?>">
<input type=button value="ответить" onclick=document.formaQ.submit()>
</form>

Мое поле в форме добавления ноды:
<input type="text" class="form-text form-autocomplete" maxlength="1024" size="60" value="ВОТ СЮДА МНЕ И НУЖНО ВСТАВИТЬ МОЙ PHP" name="field_o_vopros[und][0][target_id]" id="edit-field-o-vopros-und-0-target-id" autocomplete="OFF" aria-autocomplete="list">

Код принимающий значение:
<?php =isset($_POST['question']) ? $_POST['question'] : ''?>

Начну сначала:

Есть два типа материала "Вопрос" и разумеется "Ответ" связываю их с помощью Entity Reference + Corresponding Entity References.

Задача проста но видимо не для моего скудного ума, сделать в теле материала типа "Вопрос" кнопку (ответить) которая при нажатии будет открывать форму добавления материала типа "Ответ" и подставлять ID ноды или заголовок в поле (вопрос), таким образом пользователю не придется в ручную вводить значение, чтобы указать на кокой конкретно вопрос будет дан ответ.

В идеале (создаю 2 фала php, в одном кнопка в другом поле) система работает, проверял, но как мне воткнуть мой php в нужное мне поле или же просто переопределить поле я не знаю, буду безмерно благодарен если кто нибудь поможет мне.

Комментарии

Аватар пользователя alexxrin alexxrin 12 января 2013 в 14:03

Я на вашем месте сделал бы так, чтобы форма создания ответа принимала параметром (через путь например) номер вопроса, тогда в функции описания вашей формы (если вы делаете через form api) можно получить из nid'а вопроса все остальное, что вам необходимо.

Полагаю, что вам нужно покурить Form API, если вы его еще не раскурили.

Аватар пользователя demart demart 12 января 2013 в 19:16

Я имел приблизительное представление о Form API, но постичь его представилась возможность только когда у меня возник следующий вопрос, раньше всю темизацию делал через css, но переопределять поля не было нужды.

Я так понимаю вы предлагаете мне решение которое в той или иной степени реализует модуль Node Reference URL Widget, но стоит ли нагружать движок из-за необходимости программно отобразить в "дефолтном значении поля" кусок кода.

То что необходимо детально изучить Form API и вообще все API предлагаемое Drupal, тут вопросов нет, но задачу нужно решить до того, как я смогу располагать своими собственными знаниями, поэтому я создал данную тему.

Спасибо за идею, оставлю ее на случай если не найду другого рещения.

Аватар пользователя demart demart 13 января 2013 в 23:20

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

Аватар пользователя multpix multpix 13 января 2013 в 23:47

"demart" wrote:
Ну хоть кто нибудь, неужели никто не знает как решить такую проблему, видимо придется все же раскуривать мануалы. Да жаль, сообщество уже не то, раньше хотя бы кричали: используй поиск, или куда тебе выслать очки, потом в сети появился сервис "давай я поищу за тебя" )) а теперь, просто тишина, грустно.

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

function hook_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'otvet-node-form') {
      $form['field_o_vopros']['#default_value']='<?php =isset($_POST['question']) ? $_POST['question'] : '' ?>';
  }
}

но если так принципиально, то:

так куда тебе выслать очки?
RTFM!

Аватар пользователя demart demart 14 января 2013 в 0:00

Ну хоть кто то выругался ), и на том спасибо, собственно умел бы я в этом синтаксисе разбираться не задавал бы вопросов, может все же поможете? буду благодарен и спасибо скажу )

Я не идиот понимаю что в функции код в таком варианте не впихнуть, но неумение правильно ставить вопросы заставляет им выглядеть.

Аватар пользователя demart demart 15 января 2013 в 11:33

Ну не будьте же столь высокомерны, я уверен что любой маломальский пхп проггер может мне помочь, сверх меры прошу, очень нужно.

Ведь для того оно и существует "сообщество" чтобы делиться опытом.