2016-07-20 4 views
1

Je crée un site Web dans lequel je dois enregistrer une variable globale.Codeigniter: Utilisation de la variable statique

J'utilise ce code personne globals_helper.php custom global variable class

Mais je reçois toujours null valeur variable statique.

globals_helper.php:

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

// Application specific global variables 
class Globals 
{ 
private static $authenticatedMemberId = null; 
private static $initialized = false; 

private static function initialize() 
{ 
    if (self::$initialized) 
     return; 

    self::$authenticatedMemberId = null; 
    self::$initialized = true; 
} 

public static function setAuthenticatedMemeberId($memberId) 
{ 
    self::initialize(); 
    self::$authenticatedMemberId = $memberId; 
} 


public static function authenticatedMemeberId() 
{ 
    self::initialize(); 
    return self::$authenticatedMemberId; 
} 
} 

Je l'ai fait toutes les étapes comme ajouter globals_helper.php dans des dossiers d'aide et le fichier mis à jour autoload. Maintenant, je suis en train d'accéder à ces variables statiques à partir d'une bibliothèque personnalisée fonction « Ctrl_utility » « de get_search_term » et mes contrôleurs appelant la fonction get_search_term

Ctrl_utility.php

class Ctrl_utility { 
protected $CI; 
public static $static_search = ""; 


public function __construct() 
{ 
    // Assign the CodeIgniter super-object 
    $this->CI =& get_instance(); 

} 

public function get_search_term($searchTerm){ 

    $searchTerm = $this->CI->security->xss_clean(htmlspecialchars($searchTerm)); 

    if (isset($searchTerm) && strlen($searchTerm)>0) { 
     Globals::setAuthenticatedMemeberId($searchTerm); 
    } else { 
     $searchTerm = Globals::authenticatedMemeberId(); 
    } 
    return $searchTerm; 
} 

Un de mes contrôleur et ils ont tous classe ctrl_utility , fonction get_search_term:

class Blog_controller extends CI_Controller{ 

public function __construct() { 

    parent::__construct(); 

    $this->load->model('blogs_model'); 
} 

public function index(){ 


    //Get SearchTerm Values 
    $searchTerm = $this->ctrl_utility->get_search_term($this->input->post('searchTerm')); 

    //Get Url First Parameter 
    $start = $this->ctrl_utility->get_url_first_parameter(); 

    // Get Data from solr 
    $rows = 10; 
    $data = $this->blogs_model->solrData($start, $rows, $searchTerm); //give start of documents 

    //Pagination 
    $this->pagination->initialize($this->ctrl_utility->pagination_config($this->uri->segment(1), $rows, $data['found'])); 

    //Views 
    $this->load->view('tabs/blogs', $data); 


} 
} 

Est-ce que je fais quelque chose de mal?

+0

Quelle erreur avez-vous ici? –

+0

Lorsque je passe d'un contrôleur à un autre via le bouton, je n'obtiens pas la valeur de la variable statique en appelant la fonction Ctrl_utility get_search_term ($ searchTerm). – MTA

Répondre

0

Maintenant, quand il s'agit de les définir dans CodeIgniter, il y a plusieurs façons de le faire. J'ai énuméré quelques-uns d'entre eux ci-dessous:

  1. Créez votre propre fichier dans l'application/bibliothèques dans lequel le constructeur de classe contient un tableau en tant qu'argument. Maintenant, créez un nouveau fichier dans/application/config avec le même nom que celui donné dans l'application/les bibliothèques et déclarez-y vos variables globales. Maintenant, pour utiliser ces variables, chargez automatiquement la bibliothèque nouvellement créée. Créez votre propre fichier dans l'application/le noyau et déclarez les variables globales dedans. Que dans le contrôleur, vous devez étendre votre nom de fichier au lieu de CI_Controller. Si les variables globales sont de vraies constantes, il suffit de les ajouter dans le fichier application/config/constants.php et de les nommer en majuscules comme les autres sont définies.

  2. Si vous souhaitez définir des constantes d'application, créez un nouveau fichier de configuration et ajoutez les variables. Maintenant, chargez-le en $ this-> config-> load ('filename'); Et accéder à ces variables comme

    $ this-> config-> item ('variable_name');

Au lieu de créer aide créer une bibliothèque

Étape 1: Tout d'abord, l'application ouverte/bibliothèques et créer une coutume globals.php nom de classe. Il contient une fonction de constructeur qui contient un tableau en tant qu'argument.

<?php 

class Globals { 

// Pass array as an argument to constructor function 
public function __construct($config = array()) { 

// Create associative array from the passed array 
foreach ($config as $key => $value) { 
$data[$key] = $value; 
} 

// Make instance of CodeIgniter to use its resources 
$CI = & get_instance(); 

// Load data into CodeIgniter 
$CI->load->vars($data); 
} 

} 

?> 

Etape 2: Maintenant, pour faire le fichier de configuration, l'application/config ouvrir et créer des fichiers comme globals.php et écrire le code ci-dessous.Ce fichier contient la variable de configuration qui sera transmis comme un tableau au constructeur de Globals classe où ses clés et valeurs sont stockées dans $ data

<?php 

// Create customized config variables 
$config['web_Address']= 'https://www.example.com/blog'; 
$config['title']= 'CodeIgniter Global Variable'; 

?> 

Lorsque les charges de la fonction constructeur, il prendra les config variables à partir du fichier de configuration afin d'utiliser ces variables n'importe où.

Remarque: Le nom du fichier ci-dessus doit correspondre à la classe créée dans le dossier des bibliothèques , sinon le code ne fonctionnera pas.

Étape 3: Mais avant d'utiliser ces variables, nous devons charger automatiquement les nouvelles globales de bibliothèque créées comme indiqué ci-dessous.

Et bibliothèque de charge autoload

$autoload['libraries'] = array('globals'); 

Maintenant, vous pouvez utiliser des variables globales dans votre contrôleur

<?php 
class CI_Global_Variable_Tutorial extends CI_Controller{ 
public function __construct() { 
parent::__construct(); 
} 
// Load view page 
public function index() { 
$this->load->view('show_global_variables'); 
} 
} 
?> 

Vues: show_global_variables.php

Dans la page vue, nous pouvons utiliser des variables globales en fonction de nos besoins.

<?php 
echo "Title of the blog post : ".$title; 
echo "<a href='$web_Address'>"."Click here to go to blog page"."</a>"; 
?> 
+0

load-> vars ($ globalv) est utilisé pour stocker la variable globale? est-ce comme une session mais pas de stockage côté serveur? Puis-je remplacer la valeur de $ globalv comme dans les sessions que nous faisons sur la base d'une paire clé/valeur? – MTA

+0

Suivez toutes les étapes que j'ai expliquées ci-dessus c'est le travail @MTA –

+0

désolé de vous poser autant de questions, je suis nouveau dans ce domaine et désireux d'apprendre. Comment puis-je remplacer ces variables encore et encore du code comme dans le contrôleur ou le modèle ou ces variables sont-elles constantes? – MTA