Codeigniter,错误将变量传递给模板

时间:2018-01-23 16:59:06

标签: php codeigniter

我在尝试登录时出错,这两个错误出现

遇到PHP错误 严重性:警告

消息:非法字符串偏移'titulo'

文件名:controllers / Login.php

第二次错误

遇到PHP错误 严重性:注意

消息:未定义的变量:body

文件名:templates / login_template.php

按顺序按照代码

<?php
if (! defined('BASEPATH')) exit('No direct script access allowed'); // linha de proteção ao controller
class Login extends CI_Controller {

    public function __construct() {
        parent::__construct();  
        $this->load->model('ControleAcessoModel', 'CA');    
        //$this->output->enable_profiler(true);
    }
    public function index($dados=""){       

        $dados['titulo'] = 'Autenticação';
        $this->template->load('login_template', 'area_restrita/acesso_login.php', $dados);
        //print_r($dados);
    }
    public function logout(){
        $this->CA->logout();    
    }
    public function autenticar(){

        $form = $this->input->post(NULL, TRUE);

        $this->load->library('form_validation');

        //validação dos campos
        $this->form_validation->set_rules('senha','Senha','trim|required',
            array(
                'required' => 'Informe uma valor para %s.'
            )
        );
        $this->form_validation->set_rules('login','Login','trim|required',
            array(
                'required' => 'Informe uma valor para %s.'
            )
        );

        $this->form_validation->set_error_delimiters('<div class="alert alert-danger">','</div>');

        if($this->form_validation->run() == true){
            $login = $this->input->post("login");
            $senha = $this->input->post("senha"); 

            if(!$this->CA->logged()){               
                $this->load->model('PessoaSistemaModel','objAutenticavel');
                $this->objAutenticavel->setLogin($login);
                $this->objAutenticavel->setSenha($senha);
                $autenticado = $this->CA->autenticar($this->objAutenticavel);       
                //var_dump($autenticado); break;
                if($autenticado){                       
                    redirect('/visita');                    
                }else{
                    redirect('/login');

                }

            } else {                
                redirect('/visita');
            }
        }

        //$this->index();
    }

    public function logado(){
        $dados['titulo'] = 'Logado';
        $this->template->load('default','area_restrita/tela_inicial.php',$dados);
    }

    public function acessoNegado(){
        $dados['titulo'] = 'Bloqueio';
        if(!$this->input->is_ajax_request()){
            $this->template->load('default','mensagem/sem_permissao.php',$dados);
        }else{
            print $this->load->view('mensagem/sem_permissao.php',$dados, true);
        }
    }
}
?>

第二次错误

<!Doctype html>
<html>
<head></head>
<body class="no-skin login-layout">

        <div id="main-container" class="main-container login">

            <div class="main-content">
                <div class="main-content-inner">
                    <div class="page-content">
                        <?php
                        if (isset($_SESSION['alerta']) && !empty($_SESSION['alerta'])) {
                            print '<div class="alert alert-warning">
                                        <button data-dismiss="alert" class="close" type="button">
                                            <i class="ace-icon fa fa-times"></i>
                                        </button>' . $_SESSION['alerta'] .
                                    '</div>';
                        }
                        ?>
                        <?php
                        if (isset($_SESSION['erro']) && !empty($_SESSION['erro'])) {
                            print '<div class="alert alert-danger">
                                        <button data-dismiss="alert" class="close" type="button">
                                            <i class="ace-icon fa fa-times"></i>
                                        </button>' . $_SESSION['erro'] .
                                    '</div>';
                        }
                        ?>
                        <?= $body ?>
                    </div>
                    <!-- /.page-content -->
                </div>
            </div>
        </div>
    </body>
</html>

如果有人能帮助我,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

public function index($dados=""){ $dados不是一个数组,它是一个字符串,你不能为它添加值,好像它是一个像$dados['titulo']这样的数组,其中[]表示一个数组(因此非法字符串偏移)。

在您的视图中,您<?= $body ?>永远不会在index()函数中传递给您的视图,因此您的通知(它也永远不会回显,fyi)。

我不确定$dados=""应该用于什么,但假设它只是想要传递给控制器​​的变量,您可以执行以下操作:

public function index($dados = "") {

    $data['body'] = 'Some body text';
    $data['somevarname'] = $dados;
    $data['titulo'] = 'Autenticação';
    //or
    /*
    $data = array(
        'body' => 'Some body text',
        'somevarname' => $dados,
        'titulo' => 'Autenticação'
    );
     * 
     */
    $this->template->load('login_template', 'area_restrita/acesso_login.php', $data);
}