Is this Codeigniter 3.0 compatible? - codeigniter

Can someone tell me if this code is codeigniter 3.0 compatible ?
If not, how should it be formatted?
if ( ! function_exists('get_site_url'))
{
function get_site_url($data){
$CI =& get_instance();
//$data = '';
//echo base_url(); exit;
$data =str_replace('{SITE_URL}',base_url(),$data);
return $data;
}
}

SITE_URL is constant that you define using define('SITE_URL','value').So no need quotes ''.Try like this..
if ( ! function_exists('get_site_url'))
{
function get_site_url($data){
$CI =& get_instance();
//$data = '';
//echo base_url(); exit;
$data =str_replace(SITE_URL,base_url(),$data);
return $data;
}
}
In order to use base_url() don't forget to load url helper in
application/config/autoload.php

As you pass the $data['common_row'] into the view section
$this->load->view('home_view',$data) the data has been converted into a array is not object so when you are trying to get the data in the view you can try something like this <?php echo get_site_url($common_row['services']);?> or <?php echo get_site_url($common_row[0]['services']);?> depending upon the result.
You can debug the code and see the actual value by
print_r($common_row); die(); on the view page.

Related

Order of the views in Query database and Views in codeigniter

The order of the views change wen i make a call to a database. In this case i make a Formulari.php that is a Controller.
Formulari.php
public function resum(){
**$this->load->view('header');**
$query = $this->db->query("SELECT * FROM tarifes");
# code...
foreach ($query->result_array() as $row) {
echo $row['operador'];
echo $row['minutatge'];
echo $row['permanencia'];
echo $row['dades'];
echo $row['preu'];
echo '</br>';
}
$this->load->view('resum_taula');
$this->load->view('footer');
}
When I see this controller the first i can see is the table that returns me. But que first view i want to see is the title.
Thanks a lot!
Controller
$data['formular_data'] = $this->your_model->getData();
$this->load->view('resum_taula', $data);
$this->load->view('footer');
Model
function getData() {
$query = $this->db->get('tarifes');
return $query->result_array();
}
View
<?php print_r($formular_data'); ?> // form $data['formular_data'];

Calling a model function in view

i am trying to access a function in model, in my view in codeigniter and its not working.
can somebody please tell me where is the problem.
MODEL:
function gettemplates()
{
$sql = "select * from srs_templates";
$query = $this->db->query($sql);
$result = $query->result_array();
echo "<pre>"; print_r($result);exit;
return $result;
}
VIEW:
<select id="special" >
<?php echo $this->dashboard_ext_model->gettemplates(); ?>
</select>
Change this:
echo "<pre>"; print_r($result);exit;
To this:
echo "<pre>"; print_r($result); echo "</pre>";
Basically remove the exit. Exit aborts the script.
You should never have a good reason to call the model from the view. Model data should be passed to the controller, to then pass to the view.
Since this is MVC (Model View Controller) you shouldn't call a model from a view.
You should be calling the Model inside the controller then passing to the view as an argument.
Model:
function gettemplates()
{
$sql = "select * from srs_templates";
$query = $this->db->query($sql);
$result = $query->result_array();
echo "<pre>"; print_r($result);exit;
return $result;
}
Controller:
function gettemplates(){
//$this->dashboard_ext_model = $this->load->model('dashboard_ext_model');
//uncomment this if you didn't load the model
$data['templates'] = $this->dashboard_ext_model->gettemplates();
$this->view->load('page_name', $data);
}
View:
<select id="special" >
<?php echo $templates ?>
</select>
MVC may look stupid at first but it really helps in large size projects.
MVC DESIGN: http://i.stack.imgur.com/Beh3a.png

Codeigniter validaton_error() to array

I want to convert the output of the validation_errors() to an array(json object eventually). What I've done so far with the help of other tutorials is this -> I've extended the CI_Form_Validation Library to return the protected array _error_message
static function errorToArray()
{
$CI =& get_instance();
return $CI->form_validation->_error_messages;
}
But to no luck have I been able to view what the content inside the array is to even consider passing it to the view. Any help would be appreciated.
This is very simple
if($this->form_validation->run() === TRUE){
}else{
$array = validation_errors();
echo json_encode($array);
}

Get data from helper in CodeIgniter

I have a trouble with CodeIgniter.
I would like to get (recoup) data from a helper that I call in a view.
I will explain with the code
Here's my view :
// CALL THE FUNCTION FROM THE HELPER
<?php recup_email(); ?>
// DATA RECOUP FROM THE HELPER
<?php foreach($em as $e): ?>
<?php echo $e->email_membre; ?>
<?php endforeach; ?>
As you can see, I call the function and just after I would like to use data that I had recoup.
Here's my helper :
function recup_email()
{
$CI =& get_instance();
$CI->load->model('unite_model');
$data['em'] = $CI->unite_model->email_membre_model();
}
But I don't know how to recoup data without using
$layout_network['contenu'] = $this->load->view('list_vote_friend', $data, TRUE);
$this->load->view('layout_network',$layout_network);
because the view is already loaded.
I hope you understand, sorry for my bad english.
Many thanks.
In the example you have given, why not just return the data from the helper function?
function recup_email()
{
$CI =& get_instance();
$CI->load->model('unite_model');
$membres = $CI->unite_model->email_membre_model();
return $membres;
}
So that is you view;
// CALL THE FUNCTION FROM THE HELPER
<?php $em = recup_email(); ?>
// DATA RECOUP FROM THE HELPER
<?php foreach($em as $e): ?>
<?php echo $e->email_membre; ?>
<?php endforeach; ?>

Can't use session variable in routes.php file in codeigniter?

I am use following code to retrieve the session variable in routes.php
if($this->db_session->userdata('request_url')!="")
{
$route['user/(:any)'] = "search_user_name/redirect_url/".$_SESSION['request_url'];
$this->db_session->unset_userdata('request_url');
}
else {
$route['user/(:any)'] = "search_user_name/index/$1";
}
the session variable would be set into template/header.php
$this->db_session->set_userdata('request_url', $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]);
You can not use db_session in routes.php because routes.php is parsed before db_session is loaded.
Maybe you should create a base controller and redirect from the constructor of the base controller.
Correct me if iam wrong.
You can use hooks.
Codeigniter user guide hooks
You can use database in routes and put your routes url in database.
Here is an example:
require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$table2 = $db->dbprefix.'lang';
$query2 = $db->get( $table2 );
$result2 = $query2->result();
foreach( $result2 as $row )
{
$fields = $db->list_fields($table2);
$findme = 'code';
foreach($fields as $field):
$pos = strpos($field, $findme);
if($pos !== false and $row->$field != ''):
$route[''.$row->$field.''] = 'main/setlang/$1';
endif;
endforeach;
}

Resources