如何将多个复选框值从视图传递到控制器(使用代码点火器框架工作) [英] How to pass multipal checkbox values from view to controller (using code igniter frame work)

查看:76
本文介绍了如何将多个复选框值从视图传递到控制器(使用代码点火器框架工作)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用网站提供的教程学习CodeIgniter框架。

但是当我尝试将View状态值从View传递给控制器​​时,显示错误信息后显示。



I have tried to learn CodeIgniter framework using tutorial provided by website.
but when I tried to pass checkbox status values from View to controller, it was displayed following error msg.

引用:

遇到PHP错误



严重性:警告



消息:为foreach提供的参数无效()



文件名: controllers / Todos.php



行号:29

A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()

Filename: controllers/Todos.php

Line Number: 29







当我追踪它是由于foreach循环初始化。然后我回复



echo $ completed_todos;

echo $ completed_todos [0];

echo $ completed_todos [1]; - 没有价值;





并查看它是否返回值。但它只返回单个值,也许不是一个数组(我有一个以上的完整待办事项。)



能帮我解决这个问题。这对我来说是一个很大的帮助。








When I trace that it is due to foreach loop initialization. Then I echo the

echo $completed_todos;
echo $completed_todos[0];
echo $completed_todos[1]; — No value;


and see whether it returns values. But it have only return single value and perhaps not as an array ( I have more than one completed todos.)

Can you please help me to solve that. That would be a great help to me.


引用:

查看:索引





<!DOCTYPE html>

< html lang =en>

< head>

< meta charset =utf-8>

< title>简单的CodeIgniter应用程序 - Todos< / title>

< link rel =stylesheet

href =// maxcdn.bootstrapcdn.com/bootstrap/3.2.0/ css / bootstrap.min.css>

< / head>

< body>





< div class =container>



<?php echo form_open('todos / update_completed'); ?>



< h1> Todos< / h1>



< div class = list-group>

<?php foreach($ todos as $ todo){?>

< div class =list-group-item clearfix >

<?php

echo form_checkbox('completed',$ todo-> id,$ todo-> completed);

?>

<?php echo $ todo-> task; ?>



< / div>



<?php}?>

< button type =submitclass =btn btn-primary>更新< / button>

<?php echo form_close(); ?>





< / div><! - /.container - >



< / body>

< / html>



VIEW :index


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple CodeIgniter App - Todos</title>
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
</head>
<body>


<div class="container">

<?php echo form_open('todos/update_completed'); ?>

<h1>Todos</h1>

<div class="list-group">
<?php foreach ($todos as $todo) { ?>
<div class="list-group-item clearfix">
<?php
echo form_checkbox('completed', $todo->id, $todo->completed);
?>
<?php echo $todo->task; ?>

</div>

<?php } ?>
<button type="submit" class="btn btn-primary">Update</button>
<?php echo form_close(); ?>


</div><!-- /.container -->

</body>
</html>




Quote:

Todos控制器代码



<? php if(!defined('BASEPATH'))exit('不允许直接脚本访问');



class Todos扩展CI_Controller {



公共功能__construct(){

parent :: __ construct();



//加载todo模型使其可用

// to * all * of the控制器的动作

$ this-> load-> model('Todo_model');

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

}



公共功能指数()

{

// 1加载数据:

$ all_todos = $ this-> Todo_model-> get_all_entries();

// 2.使数据可用于视图

$ data = array();

$ data ['todos'] = $ all_todos;

// 3.渲染视图:

$ this-> load- > view('todos / index',$ data);

}



公共函数update_completed(){



$ completed_todos = $ this-> input-> post('completed');

echo $ completed_todos;

foreach($ completed_todos as $ todo_id){

echo'todo with id ='。 $ todo_id

。 '标记为已完成。< br>';

}

}







}



Todos controller code

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Todos extends CI_Controller {

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

// Load the todo model to make it available
// to *all* of the controller's actions
$this->load->model('Todo_model');
$this->load->helper('form');
}

public function index()
{
// 1. Load the data:
$all_todos = $this->Todo_model->get_all_entries();
// 2. Make the data available to the view
$data = array();
$data['todos'] = $all_todos;
// 3. Render the view:
$this->load->view('todos/index', $data);
}

public function update_completed() {

$completed_todos = $this->input->post('completed');
echo $completed_todos;
foreach ($completed_todos as $todo_id) {
echo 'The todo with id = ' . $todo_id
. ' is marked as completed.<br>';
}
}



}



非常感谢您的帮助。

谢谢。

鹤山



我尝试过:



当我追踪它是由于foreach循环初始化。然后我回复



echo $ completed_todos;

echo $ completed_todos [0];

echo $ completed_todos [1]; - 没有价值;





并查看它是否返回值。但它只返回单个值,也许不是一个数组(我有一个以上的完整待办事项。)



能帮我解决这个问题。这对我来说是一个很大的帮助。


Thank you very much for the assistance.
Thank you.
Heshan

What I have tried:

When I trace that it is due to foreach loop initialization. Then I echo the

echo $completed_todos;
echo $completed_todos[0];
echo $completed_todos[1]; — No value;


and see whether it returns values. But it have only return single value and perhaps not as an array ( I have more than one completed todos.)

Can you please help me to solve that. That would be a great help to me.

推荐答案

completed_todos;

echo
completed_todos;
echo


completed_todos [0];

echo
completed_todos[0];
echo


completed_todos [1]; - 没有价值;





并查看它是否返回值。但它只返回单个值,也许不是一个数组(我有一个以上的完整待办事项。)



能帮我解决这个问题。这对我来说是一个很大的帮助。





completed_todos[1]; — No value;


and see whether it returns values. But it have only return single value and perhaps not as an array ( I have more than one completed todos.)

Can you please help me to solve that. That would be a great help to me.


引用:

查看:索引





<!DOCTYPE html>

< html lang =en>

< head>

< meta charset =utf-8>

< title>简单的CodeIgniter应用程序 - Todos< / title>

< link rel =stylesheet

href =// maxcdn.bootstrapcdn.com/bootstrap/3.2.0/ css / bootstrap.min.css>

< / head>

< body>





< div class =container>



<?php echo form_open('todos / update_completed'); ?>



< h1> Todos< / h1>



< div class = list-group>

<?php foreach(

VIEW :index


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple CodeIgniter App - Todos</title>
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
</head>
<body>


<div class="container">

<?php echo form_open('todos/update_completed'); ?>

<h1>Todos</h1>

<div class="list-group">
<?php foreach (


这篇关于如何将多个复选框值从视图传递到控制器(使用代码点火器框架工作)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆