以下是我的观点部分:
echo $this->Form->create("Provider", array('action' => 'view_admit_lookup', ''));
echo $this->Form->input("last_name", array('label' => 'Doctor Last Name'));
echo $this->Form->submit('Search');
echo "<br><br>";
$alphabet = array(
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X",
"Y", "Z");
foreach($alphabet as $letter):
// create the row of buttons that are responsible for the search.
echo $this->Form->button($letter, array('action' => 'view_admit_lookup'));
endforeach;
现在,我希望能够修改并重新使用view_admit_lookup。
这是我控制器中的方法:
function view_admit_lookup($letter) {
echo "<pre>The letter is: ".$letter."</pre>";
// here we begin searching for whatever we need.
if(!empty($this->data['Provider']['last_name'])) {
$this->set('provider',
$this->Provider->find('all',
array('conditions' =>
array('Provider.last_name LIKE' =>
$this->data['Provider']['last_name'].'%'),
'order' =>
array('Provider.last_name ASC',
'Provider.first_name ASC'),
)
)
);
}
// set the title and the default layout.
$this->set('title_for_layout', 'Admit Lookup');
$this->layout = 'default';
}
如何“获取”与输入相关联的字母(按钮或文本字段),并根据该值执行特定操作?
答案 0 :(得分:1)
您当前向$this->Form->button()
添加“操作”的方法不正确。根据Cake文档,"$options is used primarily to specify HTML tag attributes"。按钮输入没有动作属性。 action属性属于表单元素。
回应你的评论:
$this->Form->button($letter, array('action' => 'view_admit_lookup'));
没有任何目的,这行Cake应该生成以下HTML:
<input type="button" value="A" action="view_admit_lookup">
这行HTML没有意义,实际上不会做任何事情。您应该阅读HTML表单,因为您似乎并不完全了解它们的工作方式。建议阅读:
您的问题是所有按钮都是同一表单的一部分,没有明确的方法来发送与单击按钮对应的字母。我认为最简单的两种方式是......
<强> HTML 强>
为每个按钮创建单独的<form>
元素。每种形式都可以通过以下两种方式之一传递信件:
<input>
元素。 然后,您将按钮从标准<input>
按钮更改为<submit>
按钮,并为每个字母按钮提交单独的表单。
这样的事情:
<form action="view_admit_lookup/a" method="get">
<input type="submit" value="A">
</form>
<form action="view_admit_lookup/b" method="get">
<input type="submit" value="B">
</form>
<form action="view_admit_lookup/c" method="get">
<input type="submit" value="C">
</form>
...
<强>的JavaScript 强>
拥有1个<form>
元素和所有字母按钮,并使用JavaScript函数捕获每个按钮的click
操作。使用此功能可以使用点击数据填充隐藏的<input>
并提交表单。
这样的事情:
<form action="view_admit_lookup" method="get">
<input type="hidden" name="VAL" id="VAL">
<input type="submit" value="A" onclick="return setVAL('a');">
<input type="submit" value="A" onclick="return setVAL('a');">
...
</form>
<script type="text/javascript">
function setVAL(letter){
document.getElementById('VAL').value = letter;
return true;
}
</script>
根据您选择的方法,您可以使用$this->params
或$this->data
访问控制器功能中的字母。