Как вызвать функцию из контроллера для включения на страницу просмотра с помощью Codeigniter? - PullRequest
0 голосов
/ 28 октября 2011

Я хочу вызвать функцию из контроллера для включения на страницу просмотра с помощью Codeigniter.Обычно, когда я открываю любую страницу, я вызываю $ this-> load-> view () в Controller для открытия этой страницы.Теперь я хочу добавить подстраницу на главную страницу, но она не может включать в View какую-либо функцию.Я пытаюсь включить функцию, подобную этой.

<body><? include(site_url().'/login'); ?></body>

<body><? include('/login'); ?></body>

<body><? include('./login'); ?></body>

Я могу открыть страницу с этой ссылкой http://localhost/ci_house/index.php/login., но когда я открываю главную страницу для запуска своего кода, он показывает эти ошибки.

A PHP Error was encountered

Severity: Warning

Message: include(http://localhost/ci_house/index.php/login) [function.include]: failed to open stream: no suitable wrapper could be found

Filename: views/main.php

Line Number: 8
A PHP Error was encountered

Severity: Warning

Message: include() [function.include]: Failed opening 'http://localhost/ci_house/index.php/login' for inclusion (include_path='.;C:\php5\pear')

Filename: views/main.php

Line Number: 8

Я хочу показать 2 просмотра на 1 странице.

function test1()
{ $data['var_for_login_view'] = 'get table1';
  $this->load->view('main1',$data);
}
function test2()
{ $data['var_for_login_view'] = 'get table2';
  $this->load->view('main2',$data);
}

В views / main.php:

$this->load->view('test1');
$this->load->view('test2');` 

Я хочу показать как

<body>
include('main1.php');
include('main2.php');
</body>

, но я могу показать это в Codeigniter.

Ответы [ 3 ]

1 голос
/ 28 октября 2011

Я действительно не очень хорошо понимаю ваш вопрос, но, эй, вы можете "включить" любое представление в другое представление без проблем ..

В main.php:

$this->load->view('login');

Вам даже не нужно передавать его paramwters, так как они буферизированы и доступны для любого дочернего представления, которое вы можете вставить.Но, пожалуйста, будьте более ясны в том, что вам действительно нужно.

Если вы хотите включить в main () те же представления, которые вы загружаете в метод login (), конечно, вам не нужно включать URI CI, но просто создайте переменные, которые вам нужно передать внутри метода контроллера login (), а затем вызовите любое представление, которое вы хотите, будь то представление, предназначенное для этого конкретного метода или для любого другого метода контроллера.

Так, например,

function login()
{
  $data['var_for_login_view'] = 'a variable';
  $data['var_for_this_view'] = 'another variable';
  $this->load->view('main');
}

In views / main.php:

echo $var_for_this_view;
$this->load->view('login');
echo $var_for_login_view;

// see? $data was not passed to $this->load->view('login'), but it's still there nonetheless!
0 голосов
/ 28 октября 2011

Вы не можете включить использование URL сайта, используйте это $ this-> load-> view ('template', $ data);для codeigniter.

0 голосов
/ 28 октября 2011

Я понимаю следующее: у вас есть некоторые функции, определенные в одном из ваших контроллеров, и вы хотите иметь возможность вызывать эти функции из другого контроллера / представления.т обычно это делают.Вот несколько альтернатив:

  1. Переместите эти функции в библиотеку / помощника.Загрузите эту библиотеку / помощник, куда хотите, и затем вы сможете вызывать эти функции.

  2. Если вам абсолютно необходимо вызвать эти функции из контроллера, вы можете посмотреть расширение HMVC .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...