Невозможно использовать возвращаемое значение функции в контексте записи в моем CI_Controller

    <?php
    class Cart extends CI_Controller{

   public $paypal_data = '';
   public $tax;
   public $shipping;
   public $total =0;
   public $grand_total;

   //cart index
   public function index(){
    //load view
    $data('main_content') = 'cart';
    $this->load->view('layouts/main', $data);
   }//end function

   //add to Cart
   public function add(){
    //item data in a array construct
    $data = array('id'=> $this->input->post('item_number'), 'qty'=>   $this->input->post('qty'), 'price'=> $this->input->post('price'), 'name'=>  $this->input->post('title'));//end statement

   }//end function

}//end class cart

Приведенный выше код вызывает следующую ошибку: «Неустранимая ошибка: невозможно использовать возвращаемое значение функции в контексте записи». Я много раз просматривал и искал приведенный выше код, но не мог найти ошибку. Я был бы очень признателен, если бы кто-нибудь мог помочь.

Вероятно, эта строчка: $data('main_content') = 'cart'. Что такое $data? Если это массив, вы не хотите использовать круглые скобки ...

Jeto 23.03.2018 09:34

Вероятно, это должен быть $data['main_content']. Скобки предназначены для вызова функций, квадратные скобки - для индексации массивов. Но у вас нет массива $data.

Barmar 23.03.2018 09:35

Может стоит $this->data['main_content']

Barmar 23.03.2018 09:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
32
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Может ошибка в этой строке

$data = array();
$data['main_content'] = 'cart';
Ответ принят как подходящий

Проблема в этой строке:

$data('main_content') = 'cart';

Использование круглых скобок означает, что вы вызываете функцию, но не можете назначить ее вызову функции. Вы, вероятно, хотели присвоить массиву индекс, но у вас нет массива $data. Я вижу, вы создали $data в функции add(), но эта переменная является локальной для этой функции. Вероятно, оба они должны быть свойствами класса, поэтому они должны быть $this->data. А в index() нужно использовать квадратные скобки.

   public function index(){
    //load view
    $this->data['main_content'] = 'cart';
    $this->load->view('layouts/main', $this->data);
   }//end function

   //add to Cart
   public function add(){
    //item data in a array construct
    $this->data = array('id'=> $this->input->post('item_number'), 'qty'=>   $this->input->post('qty'), 'price'=> $this->input->post('price'), 'name'=>  $this->input->post('title'));//end statement

   }//end function

Я протестировал это с помощью print_r ($ data); и вы действительно правы. Большое спасибо.

Recency 23.03.2018 09:48

Нет необходимости использовать свойства класса, по крайней мере, в индексной функции, поскольку OP просто отправляет данные в представление. Обычно это ограничивается использованием в методе контроллера в CI.

jtheman 23.03.2018 10:58

@jtheman Я не был уверен. Мне показалось, что он хотел использовать тот же массив, который обновляется в add(). Я не знаком с CI.

Barmar 23.03.2018 11:00

@Barmar, я понимаю. Но в CI способ отправки данных в представление по умолчанию - это установка простого массива данных в конкретном методе контроллера, а затем передача массива в качестве второго аргумента методу load->view(). Конечно, ваш ответ тоже полностью рабочий.

jtheman 23.03.2018 11:09

Другие вопросы по теме