CodeIgniter控制器/视图困境

时间:2014-08-16 17:07:09

标签: php codeigniter

我创建了一个简单的注册/登录系统,它(我认为)到目前为止运作良好。

现在我想在我的网站上实现它的一些功能。

控制器/ main.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Main extends CI_Controller
{
    public function index()
    {
        $this->home();
    }

    public function home()
    {
        $this->load->view('home.php');
    }
}

视图/ home.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Home</title>
</head>
<body>

<div id="container">
    <?php if ($this->session->userdata('is_logged_in')): ?>

        logged in as: <?php echo $this->session->userdata('username'); ?></br>
        <a href="<?php echo base_url().'login/logout'; ?>">Logout</a>

    <?php else: ?>

        not logged in</br></br>

        <?php echo form_open('login'); ?>
        <?php echo form_error('username'); ?>
        <input type="text" name="username" placeholder="Login" />
        </br>
        <?php echo form_error('password'); ?>
        <input type="password" name="password" placeholder="Password" />
        </br></br>
        <div><input type="submit" value="Sign in" /></div>
        <?php echo form_error('login_validation'); ?>
        </form>

    <?php endif ?>
</div>

</body>
</html>

这是在CI中做事的正确方法吗?

1 个答案:

答案 0 :(得分:2)

对于控制器部分而不是使用home(),您可以直接在index()中加载视图,因为在内部您无需任何特定原因即可从索引导航到home()。

此外,加载视图在您的文件中不需要“.php”扩展名,您可以这样做:

$this->load->view('home');

其中home.php是位于application / views /

内的文件

为了显示错误消息,您可以通过在config / form_validation.php中定义验证规则(在数组fromat中)使用另一种最佳方式,并且只需要在下面的代码中逐个显示所有消息

<?php echo validation_errors()?>