codeigniter从不同文件夹加载视图

时间:2013-01-03 10:49:45

标签: php codeigniter view

我有一个表单,在提交后加载另一个表单(来自其他控制器的另一个视图)。但是,在第二种形式中,我不知道为什么表单验证规则(在前面的表单中实现)不起作用,为什么在提交中我总是找不到页面。 关于这一点,我试图通常在网址中加载两个不同模型的页面。如果在第一个视图的模型中,如果我写入url:

,会发生什么
http://localhost/code/index.php/fichas/index

他在fichas文件夹中加载这个或其他页面没有问题,如果我尝试这样的第二个模型(Produtos)只是为了测试:

http://localhost/code/index.php/produtos/index

在此页面或其他produtos文件夹中,我总是找不到页面。我错过了重要的事情吗?为什么他能够在" views"中的某些文件夹中加载一些视图。而不是其他人?

谢谢!

使用某些代码编辑:

在index.php之后我开始使用这个表单(create.php):

    <h2>Nova Ficha de Segurança</h2>

<?php echo validation_errors(); ?>

<?php echo form_open('fichas/create') ?>

<label for="cod_produto">Código do Produto:</label>
    <input type="input" name="cod_produto" /><br />

    <label for="nome_produto">Nome do Produto:</label> 
    <input type="input" name="nome_produto" /><br />

    <label for="versao">Versão:</label>
    <input type="input" name="versao" /><br />

    <label for="data_ficha">Data da Ficha:</label>
    <input type="input" name="data_ficha" /><br />

    <input type="submit" name="submit" value="Criar Ficha" /> 

</form>

fichas.php(控制器)的函数创建:

public function create()
{
$this->load->helper('form');
$this->load->library('form_validation');

$this->form_validation->set_rules('versao', 'versao', 'required');

if ($this->form_validation->run() === FALSE)
{
    //$this->load->view('templates/header', $data); 
    //$this->load->view('templates/header');    
    $this->load->view('fichas/create');
    //$this->load->view('templates/footer');

}
else
{
    $data['teste1']=$this->fichas_model->set_fichas();
    $data['teste'] = $this->fichas_model->get_distribuidor();
    $this->load->view('produtos/ponto',$data);
}
}

从上一个功能我被重定向到produtos / ponto文件:

<h2>Identificação do Produto/Identificação da Empresa</h2>

<?php echo validation_errors(); ?>

<?php echo form_open('produtos/ponto') ?>

    <label for="nome_produto">Nome do Produto:</label> 
    <input type="input" name="nome_produto" /><br />

    <label for="descricao_produto">Descrição do Produto:</label>
    <input type="input" name="descricao_produto" /><br />

    <label for="id_ficha">Cod do Produto:</label>
    <input type="input" name="id_ficha" value="<?php echo $teste1['id_ficha'];?>" /><br />

    <h4>Distribuidor</h4>

    <label for="nome_empresa">Nome da Empresa:</label>
    <input type="input" name="nome_empresa" value="<?php echo $teste['nome_empresa'];?>" /><br />

    <label for="morada">Morada:</label>
    <input type="input" name="morada" value="<?php echo $teste['morada'];?>" /><br />

    <label for="cod_postal">Código Postal:</label>
    <input type="input" name="cod_postal" value="<?php echo $teste['cod_postal'];?>" /><br />

    <label for="localidade">Localidade:</label>
    <input type="input" name="localidade" value="<?php echo $teste['localidade'];?>" /><br />

    <label for="telefone">Telefone:</label>
    <input type="input" name="telefone" value="<?php echo $teste['telefone'];?>" /><br />

    <label for="fax">Fax:</label>
    <input type="input" name="fax" value="<?php echo $teste['fax'];?>" /><br />

    <label for="email">E-mail:</label>
    <input type="input" name="email" value="<?php echo $teste['email'];?>" /><br />

    <input type="submit" name="submit" value="Seguinte" /> 

</form>

最后,produtos控制器中的函数ponto():表单验证永远不会起作用的地方和提交后的加载视图总是找不到页面。这就是为什么我试图单独加载produtos模型的观点。

    public function ponto()
{


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

//$data['title'] = 'Create a news item';

$this->form_validation->set_rules('nome_produto', 'Nome do Produto', 'required');
$this->form_validation->set_rules('morada', 'Morada', 'required');



if ($this->form_validation->run() === FALSE)
{
    //$this->load->view('templates/header', $data); 
    //$this->load->view('templates/header');    
    $this->load->view('produtos/ponto');
    //$this->load->view('templates/footer');

}
else
{
    $this->produtos_model->set_produtos();
    $this->load->view('produtos/success');
}
}

解决:

当我创建类Produtos时,我复制了类Fichas的基础知识,所以我在Class Produto中有以下内容:

class Fichas extends CI_Controller { ...

非常感谢你的帮助,这让我失去了很多时间,但至少现在它已经解决了。

1 个答案:

答案 0 :(得分:0)

您的第二个模板似乎没有像第一个模板那样的表单开始/结束标记。