简体   繁体   中英

Link to a Controller function with parameter from a View (CodeIgniter)

Using CodeIgniter I am trying to create a link that the user can click within a view to show them the details of a record in my database.

In ASP.NET MVC3 with C# I would do it with @Html.ActionLink("Controller", "Action", new { id = item.Id})

This is my session controllers index() function

public function index()
{
        $data['sessions'] = $this->session_model->get_sessions();

        $this->load->view('_header');
        $this->load->view('session/index', $data);
        $this->load->view('_footer');
}

This is the index view it loads where I want to be able to click the link to go to enter() function

<table>

<th>Session Name</th>
<th>Description</th>
<th>Host</th>
<th></th>

<?php foreach ($sessions as $session_item): ?>
    <tr>
        <td> <?php echo $session_item['sessionName'] ?> </td>
        <td> <?php echo $session_item['sessionDesc'] ?> </td>
        <td> <?php echo $session_item['adminName'] ?> </td>
        <td> <a id="enterSession" href=<?php echo site_url("session/enter" + $session_item['id']) ?> >Enter</a></td>

    </tr>
<?php endforeach ?>

The enter session points me to the url "http://192.168.1.36/index.php/1" (if the id of my item is 1) whereas I expect "http://192.168.1.36/index.php/session/enter/1"

Any ideas on how I can make it call the enter() function also in the session controller (shown below)

 public function enter($id) {

        $this->load->view('_header');
        $this->load->view('session/enter');
        $this->load->view('_footer');
    }

There seems to be a typo in the string concatenation in your PHP code. Perhaps it will work to use:

site_url("session/enter" . $session_item['id'])

... rather than a + sign between the two strings.

Regarding the second question - it looks correct as-is. Is it failing to call the session controller's enter() function passing the $id as an argument (assuming the URL is correct)?.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM