0

カート ライブラリを試してみると、CI3 で mx hmvc がなくても問題なく動作しています。しかし、MX hmvc ファイル (つまり、application/core フォルダー内の MY_Loader.php および MY_Router.php と third_party フォルダー内の MX フォルダー) を挿入するとすぐに、次のエラーがスローされます。

Severity: Notice

Message: Undefined property: Welcome::$Session

Filename: MX/Loader.php

Line Number: 171

私は、コードイグナイターのデフォルトのコントローラーとビューを使用しようとしているだけで、モジュールの中にさえいません。私の変更されたcodeigniterのコントローラーwelcome.phpは以下の通りです

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

class Welcome extends CI_Controller {

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

    public function index()
    {

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

    // Load the cart library to use it.
    $this->load->library('cart');


    // Assuming this is the products from our database
        $data['products'] = array(
               array(
                       'id'      => 'sku_888',
                       'qty'     => 1,
                       'price'   => 39.95,
                       'name'    => 'T-Shirt',
                       'options' => array('Size' => 'xxx', 'Color' => 'White')

                    ),

                array(
                       'id'      => 'sku_888',
                       'qty'     => 1,
                       'price'   => 39.95,
                       'name'    => 'T-Shirt',
                       'options' => array('Size' => 'xx', 'Color' => 'green')

                    ),


               array(
                       'id'      => 'sku_777',
                       'qty'     => 1,
                       'price'   => 9.95,
                       'name'    => 'Coffee Mug'
                    ),
               array(
                       'id'      => 'sku_666',
                       'qty'     => 1,
                       'price'   => 29.95,
                       'name'    => 'Shot Glass'
                    )
            );



    // Insert the product to cart
    if ($this->input->get('id') != '' && array_key_exists($this->input->get('id'), $data['products']))
    {

        $this->cart->insert($data['products'][$this->input->get('id')]);
    }

    // Lets update our cart
    if ($this->input->post('update_cart'))
    {

        unset($_POST['update_cart']);
        $contents = $this->input->post();


        foreach ($contents as $content)
        {
            $info = array(
           'rowid' => $content['rowid'],
           'qty'   => $content['qty']
             );

            $this->cart->update($info);

        }
    }

      $this->load->view('welcome_message', $data);
    }

}

そしてデフォルトのcodeigniterビューwelcome_message.phpを以下のように修正しました

<b>Products</b>

<table width="100%" border="1">

  <tr>
    <td width="37%">ID</td>
    <td width="30%">Name</td>
    <td width="16%">Price</td>
    <td width="16%">&nbsp;</td>
  </tr>
  <?php $product_array_index = 0;?>
  <?php foreach($products as $product):?>
  <tr>
    <td><?php echo $product['id'];?></td>
    <td>
      <?php 
      echo $product['name'] ; 
       if (array_key_exists('options', $product)) {
         echo '<hr>';
        foreach ($product['options'] as $key => $value) 
        {
        echo  '<strong>' . $key . '</strong> : '. $value . '<br/>';  
         }  
       }

      ?>
  </td>
    <td><?php echo $product['price'];?></td>
    <td><a href="?id=<?php echo $product_array_index;?>">Add to Cart</a></td>
  </tr>
  <?php $product_array_index ++;?>
  <?php endforeach;?>
</table>

<hr>


<b>Your Cart</b>

<?php echo form_open(base_url()); ?>

<table cellpadding="6" cellspacing="1" style="width:100%" border="1">

<tr>
  <th>QTY</th>
  <th>Item Description</th>
  <th style="text-align:right">Item Price</th>
  <th style="text-align:right">Sub-Total</th>
</tr>

<?php $i = 1; ?>

<?php foreach ($this->cart->contents() as $items): ?>

  <?php echo form_hidden($i.'[rowid]', $items['rowid']); ?>

  <tr>
      <td><?php echo form_input(array('name' => $i.'[qty]', 'value' => $items['qty'], 'maxlength' => '3', 'size' => '5')); ?></td>
      <td>
        <?php echo $items['name']; ?>

            <?php if ($this->cart->has_options($items['rowid']) == TRUE): ?>

                <p>
                    <?php foreach ($this->cart->product_options($items['rowid']) as $option_name => $option_value): ?>

                        <strong><?php echo $option_name; ?>:</strong> <?php echo $option_value; ?><br />

                    <?php endforeach; ?>
                </p>

            <?php endif; ?>

      </td>
      <td style="text-align:right"><?php echo $this->cart->format_number($items['price']); ?></td>
      <td style="text-align:right">$<?php echo $this->cart->format_number($items['subtotal']); ?></td>
    </tr>

<?php $i++; ?>

<?php endforeach; ?>

<tr>
  <td colspan="2"></td>
  <td class="right"><strong>Total</strong></td>
  <td class="right" align="right">$<?php echo $this->cart->format_number($this->cart->total()); ?></td>
</tr>

</table>

<p><?php echo form_submit('update_cart', 'Update your Cart'); ?></p>

それを機能させる方法は?

4

0 に答える 0