[英]Display result at same page as form in codeigniter, undefined variable
我正在通過預訂系統來學習codeIgniter。 當結果顯示在另一頁上時,一切都變了,但是當將其放在同一頁上時(這就是我想要的方式),在提交表單后, $rooms_form_options
和$packages_form_options
變得不確定
<div>
<?php echo form_label('Conference Room', 'id') ; ?>
<?php echo form_dropdown('id', $rooms_form_options, set_value('id')); ?>
</div>
<div>
<?php echo form_label('Package type', 'package_id') ; ?>
<?php echo form_dropdown('package_id', $packages_form_options, set_value('package_id')); ?>
</div>
<div>
<?php echo form_label('Antal deltagare', 'number_people') ; ?>
<?php echo form_input('number_people', set_value('number_people')) ; ?>
</div>
<div>
<?php echo form_submit('preview', 'Book'); ?>
</div>
<?php echo form_close(); ?>
<?php
if(isset($_POST["preview"])) {
if($messages) {
echo html_escape($messages);
} else {
?>
<div class="alert alert-success">Number of participants: <?php echo html_escape($guests); ?> </div>
<div class="alert alert-success">Room: <?php echo html_escape($room); ?> </div>
<div class="alert alert-success">Package: <?php echo html_escape($package); ?> </div>
<div class="alert alert-success">Price per participant: <?php echo html_escape($price); ?> </div>
<div class="alert alert-success">Total Price: <?php echo html_escape($guests*$price); ?> </div>
<?php } }?>
這是我從以下位置獲得$rooms_form_options
和$packages_form_options
的位置:
public function index() {
$this->load->helper('form');
$this->load->view('bootstrap/header');
$this->load->model('Booking_Model');
$rooms = $this->Booking_Model->get();
$rooms_form_options = array();
foreach ($rooms as $id => $room) {
$rooms_form_options[$id] = $room->title;
}
$this->load->model('Package_Model');
$packages = $this->Package_Model->get();
$packages_form_options = array();
foreach ($packages as $id => $package) {
$packages_form_options[$id] = $package->package_name;
}
$this->load->view('booking', array(
'rooms_form_options' => $rooms_form_options,
'packages_form_options' => $packages_form_options,
));
$this->load->view('bootstrap/footer');
}
我使用稱為preview
方法來處理表單,這是我返回到預訂頁面的地方:
// load view with people, room and package values
$this->load->view('bootstrap/header');
$this->load->view('booking', array(
'guests' => $guests,
'room' => $room_title,
'package' => $package_title,
'alias' => $package_alias,
'price' => $price,
'messages' => $messages,
));
提交表單后,如何確保定義了$rooms_form_options
和$package_form_options
?
創建另一個單獨的方法來填充這些變量:
private function get_options() {
$this->load->model('Booking_Model');
$rooms = $this->Booking_Model->get();
$rooms_form_options = array();
foreach ($rooms as $id => $room) {
$rooms_form_options[$id] = $room->title;
}
$this->load->model('Package_Model');
$packages = $this->Package_Model->get();
$packages_form_options = array();
foreach ($packages as $id => $package) {
$packages_form_options[$id] = $package->package_name;
}
return array(
'packages_form_options' => $packages_form_options,
'rooms_form_options' => $rooms_form_options,
);
}
整體看起來像這樣:
public function index() {
$this->load->helper('form');
$this->load->view('bootstrap/header');
$options = $this->get_options();
$this->load->view('booking', array(
'guests' => '',
'room' => '',
'package' => '',
'alias' => '',
'price' => '',
'messages' => '',
'rooms_form_options' => $options['packages_form_options'],
'packages_form_options' => $options['rooms_form_options'],
));
$this->load->view('bootstrap/footer');
}
public function preview() {
$this->load->helper('form');
$this->load->view('bootstrap/header');
$options = $this->get_options();
$this->load->view('booking', array(
'guests' => $this->input->post('guests'),
'room' => $this->input->post('room_title'),
'package' => $this->input->post('package_title'),
'alias' => $this->input->post('package_alias'),
'price' => $this->input->post('price'),
'messages' => $this->input->post('messages'),
'rooms_form_options' => $options['packages_form_options'],
'packages_form_options' => $options['rooms_form_options'],
));
$this->load->view('bootstrap/footer');
}
private function get_options() {
$this->load->model('Booking_Model');
$rooms = $this->Booking_Model->get();
$rooms_form_options = array();
foreach ($rooms as $id => $room) {
$rooms_form_options[$id] = $room->title;
}
$this->load->model('Package_Model');
$packages = $this->Package_Model->get();
$packages_form_options = array();
foreach ($packages as $id => $package) {
$packages_form_options[$id] = $package->package_name;
}
return array(
'packages_form_options' => $packages_form_options,
'rooms_form_options' => $rooms_form_options,
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.