gpt4 book ai didi

php - Codeigniter MVC - 在不丢失 Controller 数据和表单验证的情况下加载 View

转载 作者:搜寻专家 更新时间:2023-10-31 21:29:53 25 4
gpt4 key购买 nike

对于 MVC 在 codeigniter 中的工作方式,这对我来说没有意义。我使用 example.com/company/加载了“controller/Company.php”

function index() {
$page = uri_string();
$data['title'] = ucfirst($page);

$this->load->view('templates/header', $data);
$this->load->view('templates/top_nav', $data);
$this->load->view($page, $data);
$this->load->view('templates/footer', $data);
}

这会加载“views/company.php”并显示表单:

<h1 class="page-title"><?php echo $title; ?></h1>
<?php echo form_open('company/update', 'class="form-horizontal" role="form"'); ?>
<input name="company_name" type="text">
<?php echo form_error('company_name'); ?> //if empty display error
//rest of form and submit button

然后我在 Company Controller 中有一个更新函数:

 function update() {
$this->form_validation->set_rules('company_name', 'Company Name', 'trim|required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('company');
} else {
//update db, load model, post data, success, etc
}
}

我的问题是:

  1. 如果我只是再次加载表单 View ,那么我会丢失页眉、导航、页脚等。
  2. 如果我重新声明所有 4 个 View ,我将丢失原始数据变量:$title、$page
  3. 如果我使用 redirect('company');再次加载 Controller 然后我会丢失提交的数据和 form_error('company_name');会是空的

我希望我错过了一些重要的东西,因为我整天都在盯着这个看并寻找答案,但找不到关于所有这些如何在“现实世界”中工作的教程谢谢

最佳答案

当然可以。 Controller 方法在您的项目中充当单一功能。

如果我再解释一下

<?php
public function one()
{
echo '1';
}

public function two()
{
echo '2';
}

这里函数one不知道什么是函数two。所以这两个函数都是独立的

根据你的问题

您在 index() 中加载此 View

$this->load->view('templates/header', $data);
$this->load->view('templates/top_nav', $data);
$this->load->view($page, $data);
$this->load->view('templates/footer', $data);

但在 update() 中你只加载

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

所以在第二个函数中没有页眉、导航和页脚。

你的问题的答案是

<?php
if ($this->form_validation->run() == FALSE)
{
$this->load->view('templates/header', $data);
$this->load->view('templates/top_nav', $data);
$this->load->view('company');
$this->load->view('templates/footer', $data);

} else
{
//update db, load model, post data, success, etc
}

对于问题二

你可以这样使用

<?php
if ($this->form_validation->run() == FALSE)
{
$page = uri_string();
$data['title'] = ucfirst($page);

$this->load->view('templates/header', $data);
$this->load->view('templates/top_nav', $data);
$this->load->view('company');
$this->load->view('templates/footer', $data);

} else
{
//update db, load model, post data, success, etc
}

关于php - Codeigniter MVC - 在不丢失 Controller 数据和表单验证的情况下加载 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com