这是我的第一个代码点火器项目,我遇到了一些错误。
我尝试用以下代码将参数发送到控制器函数。但'Missing arguement 1 for school::add_topic'
在控制器文件中显示错误
这是我的代码:-查看文件-我只包含了代码的重要部分
<?php
$createdby='';
?>
<a class="admin-btn" href="<?php echo base_url(); ?>index.php/school/add_topic/<?php echo myfunction(); ?>">Add Topic</a>
<?php
foreach ($r as $new)
{
?>
<?php
if($new->id_class==$class && $new->id_subject==$sub)
{
$createdby=$new->id_login;
?>
<tr><th>Class</th><td> <?php echo $new->class_name; ?></td></tr>
<tr><th>Subject</th><td>
<?php echo $new->subject_name; ?></td></tr>
<tr><th>Created By</th><td>
<?php echo $new->staff_name; ?></td>
<th>Created On</th><td>
<?php echo $new->created_on; ?></td></tr>
<?php
}
}
function myfunction()
{
global $createdby;
return $createdby;
}
?>
我想做的是将变量'$createdby'
发送到我的控制器函数'add_topic()'
。
这是我的控制器功能:
public function add_topic($createdby)
{
$data['createdby'] = $createdby;
$this->load->view('topic_add',$data);
}
提前谢谢。
index.php/school/add_topic/
只是对控制器school
的函数add_topic
的调用,但没有参数,因此函数没有得到任何东西。在斜线后添加一个参数(例如index.php/school/add_topic/xyz
),则$createdby
将为xyz。
此外,您可以使用URL Helper的函数site_url()
,而不是编写index.php/xxxxx
site_url('school/add_topic/param');
在你的例子中,你得到了一个非常复杂的结构——为什么不这样使用它呢:
<a class="admin-btn" href="<?=site_url('school/add_topic/'.$createdby)?>">Add Topic</a>
您可能会看到另一个提示:<?php echo $xyz; ?>
可以写为<?=$xyz?>
,而=
是echo。
实际上,您的代码流是不正确的,以至于$createdby在初始化之前就被调用了。你可以试试这个代码:
<?php
$createdby='';
$selected = '';
if (!empty($r)) {
foreach ($r as $new)
{
if($new->id_class==$class && $new->id_subject==$sub)
{
$createdby=$new->id_login;
$selected = $new;
break;
}
}
}
?>
<a class="admin-btn" href="<?php echo base_url().'index.php/school/add_topic/'. myfunction(); ?>">Add Topic</a>
<?php
if (!empty($selected)) {
?>
<tr><th>Class</th><td> <?php echo $selected->class_name; ?></td></tr>
<tr><th>Subject</th><td>
<?php echo $selected->subject_name; ?></td></tr>
<tr><th>Created By</th><td>
<?php echo $selected->staff_name; ?></td>
<th>Created On</th><td>
<?php echo $selected->created_on; ?></td></tr> <?php
}
function myfunction()
{
global $createdby;
return $createdby;
}
?>
另外,$createdby可能没有初始化,因此控制器函数应该有一个可选参数,而不是一个固定参数。
public function add_topic($createdby = '')
{
$data['createdby'] = $createdby;
$this->load->view('topic_add',$data);
}