【问题标题】:Codeigniter, error passing variable to templateCodeigniter,将变量传递给模板时出错
【发布时间】:2018-01-23 16:59:05
【问题描述】:

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

遇到 PHP 错误 严重性:警告

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

文件名:controllers/Login.php

第二个错误

遇到 PHP 错误 严重性:通知

消息:未定义变量:正文

文件名:模板/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>

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

【问题讨论】:

标签: php codeigniter


【解决方案1】:

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

在您的视图中,您有 &lt;?= $body ?&gt;,它永远不会在 index() 函数中传递给您的视图,因此您的通知(它也永远不会回显,仅供参考)。

我不确定$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);
}

【讨论】:

    猜你喜欢
    • 2017-11-10
    • 2019-04-03
    • 2011-05-08
    • 2015-08-24
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多