这是我的第一个codeigniter项目,我收到了一些错误。
我尝试使用以下代码将参数发送到控制器功能。但它在控制器文件中显示'Missing arguement 1 for school::add_topic'
这是我的代码:-view file-我只包含了代码的重要部分
<?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);
}
提前致谢。
答案 0 :(得分:0)
index.php/school/add_topic/
只是对控制器add_topic
的函数school
的调用,但是没有参数,所以函数没有得到任何东西。斜杠后添加参数(例如index.php/school/add_topic/xyz
)和$createdby
将为xyz。
此外,您可以使用网址助手的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?>
而=
是回音。
答案 1 :(得分:0)
实际上你的代码流是不正确的,因此在创建初始化之前已经调用了$ 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);
}