Codeigniter ... проблем с view

Msecurity

Registered
Здравейте, реших и аз да използвам codeigniter ии вече имам проблем хахаха :D
Как мога да заредя определена функция от друг контролер във view
Примерно имам контролера "Common", в който има функцията "menu" с дизайн...
и въпроса е как мога да я извикам в основният view файл за контолера обект примерно?
 
Не съм запознат с code igniter, ама логически не би трябвало вюто да вика каквито и да е контролери. Вюто само рисува подадените параметри.

Вместо да викаш контролер във вю, се "поръчай" нужните параметри във вюто от контролера, който ще го рисува. А нужните параметри ще ги извадиш в контролера и ще ги пратиш на вюто.
 
Подкрепям, чее не е добра идея, ама щом си решил да мажеш - мажи. Ще очакваме още теми значи хах ;д

Примерен код:
PHP:
/*Load External Controller*/
$controller = "controller_name_here!!";
$method = "method_name_here!!";

include($controller.'.php'); 
$get = new $controller();
$get->$method();


https://stackoverflow.com/questions/6500022/codeigniter-calling-a-method-of-one-controller-from-other

https://www.quora.com/Is-it-possible-to-call-a-controller-from-another-controller-in-CodeIgniter - това е по legit :д

:idea: :idea: :?:
 
Не не, не искам да мажа ... :D
искам да направя следното
Имам си динамичен хедър .. с менюта, логини и т.н ...
и искам просто в дизайна само с <?php $header; ?> да мога да го извикам ..
Ето пример:
мета тагове....
$хедър
контент...

нещо такова :D
Както и примерно да мога да извикам някои модул.. да речем за "Подобни продукти" ... да си го зареди с функциоаност и дизайн :d
 
Нещо не те разбрах имаш два контролера и в единия връщаш някакво вю, а от втория искаш някакъв метод така ли?
 
не.. имам си контролер за извеждане на обект, но искам да добавя и модул / уджет в страницата с обекта, който е в друг, файл, друг клас и т.н
 
Еми можеш да наследиш другия клас в контролера и така ще имаш достъп до всичките му методи.
 
teroristd каза:
Еми можеш да наследиш другия клас в контролера и така ще имаш достъп до всичките му методи.
А ако иска да направи 2 такива widgeta?
 
Много се радвам че отново има дискусия, но говорим за CI, и имах предвид да стане нещо като това:
PHP:
$data['column_left'] = $this->load->controller('common/column_left');
Като common = файл/контроллер
column_left = функцията
и във view файл се извиква ето така:
<div class="row"><?php echo $column_left; ?> .... </div>
 
Не съм запознат с codeigniter но разгледах някои подобни примери. Виж това дали няма да ти свърши работа.
PHP:
$this->load->library('../path_to_file/common');
$data['column_left'] = $this->common->column_left();
 
В други работни рамки обикновено темплейтите имат функциите да се импортват едни други. Тук няма ли?
 
Реших проблема, ако в бъдеще на някои му потрябва:
в application/core се създава нов файл с името My_Loader и със съдържание:
PHP:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Loader extends CI_Loader {

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

    public function controller($file_name) {
        $CI = & get_instance();
        $file_path = APPPATH.'controllers/' . $file_name . '.php';
        $object_name = $file_name;
        $class_name = ucfirst($file_name);

        if (file_exists($file_path)) {
            require $file_path;

            $CI->$object_name = new $class_name();
        }
        else {
            show_error('Unable to load the requested controller class: ' . $class_name);
        }
    }
}
ии после вече контролера се извика чрез:
PHP:
$this->load->controller('filename','classname');
$this->classname->functionname();
 

Горе