向控制器功能发送参数失败


sending parameter to the controller function failed

这是我的第一个代码点火器项目,我遇到了一些错误。

我尝试用以下代码将参数发送到控制器函数。但'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);
}