Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Drupal7中构建表单之前,如何编写一些代码(有点像预处理)?_Php_Forms_Drupal_Preprocessor_Drupal 7 - Fatal编程技术网

Php 在Drupal7中构建表单之前,如何编写一些代码(有点像预处理)?

Php 在Drupal7中构建表单之前,如何编写一些代码(有点像预处理)?,php,forms,drupal,preprocessor,drupal-7,Php,Forms,Drupal,Preprocessor,Drupal 7,我想问一下,在Drupal7中构建表单之前,如何编写一些代码? 在定义表单之前,我想执行一些代码(我想构建一个对象),我该怎么做 我要执行的代码: if (isset($_GET["team"])){$team = $_GET["team"];} else {$team=1; }; $myteam = new Team($team); 我定义表格: function teamform_nameform() { $form['editteam']['team_city'] = arra

我想问一下,在Drupal7中构建表单之前,如何编写一些代码? 在定义表单之前,我想执行一些代码(我想构建一个对象),我该怎么做

我要执行的代码:

if (isset($_GET["team"])){$team = $_GET["team"];} else {$team=1; };
$myteam = new Team($team);
我定义表格:

function teamform_nameform() { 
    $form['editteam']['team_city'] = array( 
    '#title' => t('Team city'), 
    '#type' => 'textfield', 
    '#description' => t(''), 
        '#required' => TRUE,
        '#default_value' =>**$myteam->returnCity()**,
        '#size' => 30, 
     );
$form['editteam']['submitContentChanges'] = array( 
     '#type' => 'submit', 
     '#value' => t('Save changes'),
     '#submit' => array('teamform_editteam_submitContentChanges'),
);
}
我试着用下面的钩子,但不起作用。(我仍然无法访问变量
$team
和对象
$myteam
(据说它们未定义))

$team是我使用方法get获取的团队id,如果未设置,则指定默认值$myteam是我基于团队id构建的对象。 然后我想访问函数teamform_nameform()中的对象。在这个函数中,我使用returnCity()方法返回团队所属的城市;作为默认值。 然后我想对对象进行更改。具体来说,当用户更改团队的城市并单击submit按钮时,我希望更新对象$myteam中的城市。因此,我使用以下函数:

function teamform_editteam_submitContentChanges($form, &$form_state){
  $team_city=$form_state['values']['team_city'];
  $myteam->updateTeamCity($team_city); //i got the error here. it's said that $myteam is undefined!
}

允许您在呈现表单之前修改表单,包括添加
#default_值
属性。

看起来您希望对象在页面加载期间保持不变,这听起来正确吗?如果是这种情况,您可以将其存储在会话中。试着这样做:

/**
*实现hook\u form\u alter()。
*/ 
函数teamform_form_alter(&$form,&$form_state,$form_id){
$team=isset($\u GET[“team”])?$\u GET[“team”]:2;
$\u SESSION['team']=新团队($team);
}
功能团队表单\u编辑团队\u提交内容更改($form,&$form\u状态){
$team_city=$form_state['values']['team_city'];
$myteam=$_会话['team'];
$myteam->updateTeamCity($team\u city);
}

这一定很简单,我以前使用过
$modulename\u preprocess\u$hook()
进行页面预渲染。在这种情况下,我可以使用
hook\u init()
吗?谢谢您的快速回复。但是在我的例子中如何使用它呢?这个函数中有三个参数。@alexey:看起来你的问题可能不是Drupal特有的,因此我在你的问题中添加了php标记。也许您可以添加更多关于从何处获取
$team
变量的详细信息,以及您正在尝试做的事情的总体情况。谢谢!我更新了我的帖子,添加了我将要做的事情的大图。
function teamform_editteam_submitContentChanges($form, &$form_state){
  $team_city=$form_state['values']['team_city'];
  $myteam->updateTeamCity($team_city); //i got the error here. it's said that $myteam is undefined!
}