当我使用另一个控制器渲染页面时,表单验证停止工作

2023-12-01

我编写了一个快速 CI 库类来渲染我的页面,这样我就不必一直输入“$this->load->view”并且保持 DRY。现在,当我在传递无效数据后重新呈现联系表单时,错误消息不会显示。

图书馆类:

class Page extends CI_Controller {

    public function render($page, $data) { // $page should be path to page view

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

    }  

}

和控制器:

class Contact extends CI_Controller {

    public function __construct() {
        parent::__construct();

        $this->load->helper('form');
        $this->load->library(array('form_validation', 'email', 'page'));
    }

    public function index() {

        $this->form_validation->set_rules('sender_name', 'From', 'required');
        $this->form_validation->set_rules('sender_email', 'Email', 'required|valid_email');
        $this->form_validation->set_rules('subject', 'Subject', 'required');
        $this->form_validation->set_rules('message', 'Message', 'required');

        if ($this->form_validation->run() === FALSE) {

            $this->load->library('page');
            $this->page->render('contact/contact', array('title' => 'Contact Me')); // pass in page title

            /* IT WORKED THIS WAY
            $this->load->view('fragments/header', array('title' => 'Contact Me')); // pass in page title
            $this->load->view('fragments/navigation');
            $this->load->view('contact/contact'); // TODO maintain form state
            $this->load->view('fragments/navigation');
            $this->load->view('fragments/footer');
             * 
             */
        }

//SNIP

联系表格视图:

<h1>Contact Me</h1>
<?php echo form_open('contact', 'id="contact_form"'); ?>

<label for="sender_name">Name:</label>
<?php echo form_input('sender_name'); ?>
<span class="error"><?php echo form_error('sender_name'); ?></span>

<label for="sender_email">Email:</label>
<?php echo form_input('sender_email'); ?>
<span class="error"><?php echo form_error('sender_email'); ?></span>

<label for="subject">Subject:</label>
<?php echo form_input('subject'); ?>
<span class="error"><?php echo form_error('subject'); ?></span>

<label for="message">Message:</label>
<?php echo form_textarea('message'); ?>
<span class="error"><?php echo form_error('message'); ?></span>

<?php echo form_submit('submit', 'Send'); ?>  

如何使用此帮助程序渲染页面并仍然从 form_validation 库检索错误消息?


创建一个名为template.php在您的视图文件夹中,其中包含以下代码:

<?php

$this->load->view('fragments/header', $this->_ci_cached_vars); // pass $data vars
$this->load->view('fragments/navigation');
$this->load->view($view);
$this->load->view('fragments/navigation');
$this->load->view('fragments/footer');

然后使用以下控制器代码:

public function index() {

    $this->form_validation->set_rules('sender_name', 'From', 'required');
    $this->form_validation->set_rules('sender_email', 'Email', 'required|valid_email');
    $this->form_validation->set_rules('subject', 'Subject', 'required');
    $this->form_validation->set_rules('message', 'Message', 'required');

    if ($this->form_validation->run() === FALSE) {

        $data = array(
            'view' => 'contact/contact', 
            'title' => 'Contact Me');
        $this->load->view('template', $data);
    }

您不需要创建库来执行此操作,因为您只需创建一个模板视图即可加载适当的视图和指定的视图并将数据传递给它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我使用另一个控制器渲染页面时,表单验证停止工作 的相关文章

随机推荐

  • 从 .pst 文件中提取所有 .msg 文件

    注意 我被要求创建一个应用程序 最好在 MFC 中从 pst 文件中提取 msg 文件 我被告知他们尝试使用其他第 3 方应用程序 但都失败了 不要问我怎么做 所以这就是为什么他们要求我创建一个应用程序来执行此操作 第一个问题 我被告知MF
  • 无法导入包:InputHookManager 的问题

    我现在花了大约一个小时尝试解决这个问题 但失败了 我读过几个相关问题 例如this GitHub 问题如this但无法找到如何最好地解决这个问题 导致错误的步骤 import matplotlib pyplot as plt 错误信息 At
  • 批处理脚本 - 计算文件中字符的实例数

    在 Windows XP 中使用批处理脚本 bat 文件 我将如何读取文本文件并查找存在多少个字符实例 例如 我有一个包含以下内容的字符串 OIJEFJ JOIEJKAJF LKAJFKLJEIJ JKLFJALKJF LKJLKFA LK
  • 正确使用 Kivy 的 .kv 文件并将它们导入到您的 Python 脚本中

    我正在关注Kivy 教程我无法从 kv 文件正确加载属性 由于某种原因 我有时可以通过for kv in listdir kv path Builder load file kv path kv 但我不能通过简单地将 kv 文件放在同一个根
  • AndroidTestCompile 导入中无法识别依赖项

    实际上 我的项目有单元测试 所有这些都配置在 src test java 最近我需要添加仪器测试 src androidTest java 为此 我在中添加了 espresso 依赖项build gradle dependencies co
  • 扩展-THREE.MeshBasicMaterial

    我希望制作 THREE MeshBasicMaterial 的副本 并基于它创建我自己的修改材质 我需要稍微编辑一下着色器 并添加一些制服 但我可以处理这个 首先 我想让材质像 MeshBasicMaterial 一样工作 并从那里获取东西
  • 如何编写客户端-服务器视频流

    我正在开发一个实时工作的项目 我必须编写一个视频流客户端服务器应用程序 该服务器会将 AVI MPEG 等发送到 Web 应用程序 我有一些疑问 建议使用什么协议来执行此操作 http rtp 或其他 在网络应用程序中 如何向用户显示它 使
  • 实体框架 6:审核/跟踪变更

    我的核心项目是用 C 编写的 我在一个数据库上工作 其中一些表具有 user mod 和 date mod 列 用于标记谁以及何时制作了一些mod 并且与 data new 和 user new 相同 我的问题 有没有办法集中它并自动插入这
  • jquery ajax调用不是异步的

    我对 jQuery 的 AJAX 方法的实现很陌生 我有一个简单的设置 可以访问两个不同的页面 一个需要 10 秒才能完成 我在上面设置了一个计时器 另一个检查第一页的状态 这两个函数是progressCheck 它每秒请求其页面的最新状态
  • 使用邻接列表与邻接矩阵的图的大小?

    Suppose there are 236 web pages and on average each web page has 24 hyperlinks Consider the directed graph with one vert
  • 在 Python 中通过 Selenium 导航到新页面

    如何在 python 中使用与 Selenium 相同的驱动程序导航到另一个网页 我不想打开新页面 我想继续使用同一个驱动程序 我认为以下方法会起作用 driver navigate to https support tomtom com
  • 如何在 PHP 中构建跨数据库查询?

    在我们的最后一集中 我如何在 MySQL 中构建跨数据库查询 我学会了如何在MySQL中构建跨数据库查询 这很有效 但是当我们的英雄尝试在 PHP 中使用这些新知识时 他发现他最好的朋友失败了 我看了一下mysql select db对于
  • 如何在应用程序中的每个 MessageBox 处放置断点?

    如何在应用程序中的每个 MessageBox 处放置断点 在 Visual Studio IDE 中选择菜单Debug gt New breakpoint gt Breakpoint at Function 用文本 MessageBox 填
  • Retrofit 收到 400 错误请求,但与邮递员一起使用

    我的 api 基本网址是 https locodealapi herokuapp com api deals 在邮递员中 在标题中传递以下内容 效果很好 x access token eyJhbGciOiJIUzI1NiIsInR5cCI6
  • VBA - 如果 A 列中的单元格不为空,则 B 列等于

    我正在寻找一些代码来查看 A 列 只要 A 列中的单元格不为空 那么 B 列中的相应单元格将等于特定值 因此 如果 Cell A1 则 Cell B1 Value MyText 重复此操作 直到 A 列中的单元格为空白或为空 为了添加更多说
  • Mercurial - 添加不在存储库文件夹内的项目

    我是一个没有经验的 Mercurial 用户 我正在使用 VS2010 和 Mercurial 我让一切都在一个存储库上运行良好 该存储库包含一个解决方案文件和嵌套在 父 文件夹中的两个项目 每当我更改文件时 提交过程都会检测到更改等 然后
  • 如何为 Swing 中的 JTable 提供分页支持?

    我在 Swing Java 中创建了一个 GUI 其中使用了 JTable 现在我想通过使用分页在其中显示下一页信息 我该怎么做呢 实现此目的的另一个选项是使用无滚动条的滚动窗格和几个导航按钮来实现控制 已经添加的按钮都是正常的JButto
  • 如何从 Analytics Application Insights 获取 Qna Maker“Q”?

    我已经使用 Qna Maker 创建了聊天机器人的知识库 并尝试使用 Analytics Application Insights 可视化一些统计数据 我想做的事 我想创建一个图表 其中包含最常见的 Qna Maker 问题 我的问题 我在
  • 读取 React 应用程序 src 文件夹中的 excel

    我使用创建了一个反应应用程序react CLI 我现在创建了一个名为的文件夹data现在我想使用读取该数据xlsxnpm 包 但是 它不起作用 我认为这可能与我引用 Excel 文件的方式有关 因为我收到警告 字符串 类型上不存在属性 工作
  • 当我使用另一个控制器渲染页面时,表单验证停止工作

    我编写了一个快速 CI 库类来渲染我的页面 这样我就不必一直输入 this gt load gt view 并且保持 DRY 现在 当我在传递无效数据后重新呈现联系表单时 错误消息不会显示 图书馆类 class Page extends C