web-dev-qa-db-fra.com

codeigniter inclut le fichier commun en vue

Bonjour à tous J'ai un site développé en codeigniter et je veux stocker dans un fichier appelé common.php des fonctions javascript/PHP que j'utilise dans plusieurs pages . J'ai essayé dans ce mode:

require(base_url().'application/libraries/common.php'); //I have tried also include

Cela me renvoie cette erreur:

A PHP Error was encountered

Severity: Warning

Message: require() [function.require]: http:// wrapper is disabled in the server configuration by allow_url_include=0

Je vais à mon php.ini et j'active allow_url_include, redémarre Apache et quand j'essaye de charger la page, retourne-moi maintenant cette erreur:

A PHP Error was encountered

Severity: Warning

Message: require() [function.require]: http:// wrapper is disabled in the server configuration by allow_url_include=0

Filename: backend/hotel_view.php

Line Number: 6

A PHP Error was encountered

Severity: Warning

Message: require(http://demo.webanddesign.it/public/klikkahotel.com/application/libraries/common.php) [function.require]: failed to open stream: no suitable wrapper could be found

Filename: backend/hotel_view.php

Line Number: 6


Fatal error: require() [function.require]: Failed opening required 'http://demo.webanddesign.it/public/klikkahotel.com/application/libraries/common.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/public/klikkahotel.com/application/views/backend/hotel_view.php on line 6

Que puis-je faire pour inclure un simple fichier dans mes pages?

15

Tirez-le dans la vue souhaitée à l'aide de $this->load->view('common'); Vous pouvez inclure d'autres vues à partir du contrôleur ou de la vue.

Exemple 1

votre_contrôleur.php

public function index() {
   $this->load->view('homepage');
}

views/homepage.php

<?php
$this->load->view('common');
?>

<body>
  <!-- html -->
</body>

Exemple 2

votre_contrôleur.php

public function index() {
  $this->load->view('common');
  $this->load->view('homepage');
}
32
xbonez

Vous devez utiliser APPPATH ou BASEPATH ou simplement taper le chemin complet du fichier.

Pour des raisons de sécurité, require_once doit recevoir un fichier local et non une URL. Je ne recommanderais pas vraiment d'utiliser require_once() dans CodeIgniter. Il pourrait être préférable d'utiliser:

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

2
ajtrichards
  1. base_url() fait référence au chemin Web tel que http://localhost/myproject/. Vous ne pouvez pas inclure un fichier distant, vous ne devriez en fait pas. C'est un risque de sécurité. Voir Impossible d'inclure le fichier sur le serveur distant

  2. Construire une bibliothèque personnalisée est un bon choix et si vous l’utilisez beaucoup sur votre site Web, vous pouvez l’inclure dans application/config/autoload.php dans la section $autoload['libraries']. Il chargera automatiquement chaque fois que vous rechargerez l'application/le site Web en fonction de codeigniter. Exemple: $autoload['libraries'] = array('common'); si votre bibliothèque s'appelle common.php et se trouve dans application/libraries/

  3. NE PAS mettre des fonctions dans un visualiseur, c'est pourquoi les bibliothèques et les aides existent. Une visionneuse ne devrait contenir que ce qu'un utilisateur devrait voir. Exemple: une vue est une forme de visualisation du modèle.

1
machineaddict

Vous pouvez inclure anyware en utilisant

<?php $this->load->view('file'); ?>
0
Fel

Pour résoudre ce problème de manière plus efficace, je l’ai fait:

Vous créez un nouvel assistant (dans application/helpers) avec un nom (par exemple, common_helpers.php, le trait de soulignement est important). Dans ce fichier, vous mettez toutes les fonctions, par exemple, construire des morceaux de HTML en commun.

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

    function getHead(){
    require_once(APPPATH."views/common/head.php");
    }   

    function getScripts(){
    require_once(APPPATH."views/common/scripts.php");
    }

    function getFooter(){
    require_once(APPPATH."views/common/footer.php");
    }

Dans votre contrôleur, vous appelez une seule vue en ce qui concerne MVC et appelez les fonctions à partir de votre assistant personnalisé.

class Hello extends CI_Controller {

   public function index(){
       $this->load->helper('common');
       $this->load->view('index');   
   }

}
0
Tudor