it-swarm.com.de

Codeigniter: Wie werden Javascript-Dateien eingefügt?

Hallo, ich habe gerade angefangen, mit CodeIgniter Framework zu arbeiten. Meine aktuelle Verzeichnisstruktur ist

Demo(Project name)
 +System
 +Application
   -Controllers
      demo.php
   +Model
   -Views
      view_demo.php
 -Js
    ajax.js
    jquery.js  

Bitte sagen Sie mir, wie .js-Dateien in view_demo.php eingefügt werden.

Danke Raj

18
Raj

Sie müssen base_url() verwenden, um die Javascript-Datei in Ihre Ansicht aufzunehmen.

Also in der view_demo.php Datei:

<script type="text/javascript" src="<?php echo base_url();?>js/jquery.js" ></script>
<script type="text/javascript" src="<?php echo base_url();?>js/ajax.js" ></script>

Sie benötigen den URL-Helfer, der geladen ist. Um den Helfer zu laden, müssen Sie Ihren demo.php-Controller anlegen:

$this->load->helper('url');

Sie können auch automatisch auf\config\autoload.php im Helfer-Array laden.

Weitere Informationen zu base_url (): http://www.codeigniter.com/user_guide/helpers/url_helper.html#base_url

25
ipalaus

Sie würden keine JS-Dateien in PHP einschließen. Sie werden als Skript-Tags in dem von Ihnen erzeugten HTML-Code ausgegeben und möglicherweise als Ausgabe aus dem Skript PHP ausgegeben.

Soweit ich weiß, gibt es keine eingebaute CodeIginiter-Funktion, die diese Ausgabe einschließt, wie es für CSS mit der von CI bereitgestellten Funktion link_tag() vorgesehen ist. Ich habe eine Funktion namens script_tag() zur system/helpers/html_helper.php-Datei von CI hinzugefügt. Die Funktion ist:

if ( ! function_exists('script_tag')) {
    function script_tag($src = '', $language = 'javascript', $type = 'text/javascript', $index_page = FALSE)
    {
        $CI =& get_instance();
        $script = '<scr'.'ipt';
        if (is_array($src)) {
            foreach ($src as $k=>$v) {
                if ($k == 'src' AND strpos($v, '://') === FALSE) {
                    if ($index_page === TRUE) {
                        $script .= ' src="'.$CI->config->site_url($v).'"';
                    }
                    else {
                        $script .= ' src="'.$CI->config->slash_item('base_url').$v.'"';
                    }
                }
                else {
                    $script .= "$k=\"$v\"";
                }
            }

            $script .= "></scr"."ipt>\n";
        }
        else {
            if ( strpos($src, '://') !== FALSE) {
                $script .= ' src="'.$src.'" ';
            }
            elseif ($index_page === TRUE) {
                $script .= ' src="'.$CI->config->site_url($src).'" ';
            }
            else {
                $script .= ' src="'.$CI->config->slash_item('base_url').$src.'" ';
            }

            $script .= 'language="'.$language.'" type="'.$type.'"';
            $script .= ' /></scr'.'ipt>'."\n";
        }
        return $script;
    }
}

Dann können Sie in Ihrem PHP Code Folgendes tun:

echo script_tag('content/js/jquery-1.4.2.js');
20
RC.

Ich speichere mein Javascript in einem Unterverzeichnis meines Ansichtsordners, so dass der Dateipfad relativ zu der aufgerufenen Ansicht ist und ich das base_url () weglasse. 

Eine andere Technik, die ich verwendete, bestand darin, ein Array von Skripts zu definieren, das in meinen Controller aufgenommen werden soll, und dann das Array in meiner Ansicht durchzublättern, um sie einzuschließen. Dies erlaubt mir, spezielle js-Funktionen nur bei Bedarf einzubeziehen.

$data['scripts to load'] = array('edit.js','menu.js', 'contact.js');
$this->load->view('myview');

Dann in der Ansicht

 <?php  foreach($scripts_to_load as $script):?>
           <script type='text/javascript' src = 'my_js/<?php echo $script;?>'>
 <?php endforeach;?>

Wenn Sie Skriptdateien haben, die auf jeder Seite geladen werden, können Sie sie in der Fußzeilenansicht hart codieren, wie in den anderen Antworten beschrieben.

9
kevtrout

Sehen Sie sich die CodeIgniter-Vorlagenbibliothek von Phil Sturgeon an. Wir verwenden eine modifizierte Version davon bei der Arbeit . http://philsturgeon.co.uk/code/codeigniter-template

1
Anthony Jack

Die $ data-Variable kann manchmal verloren gehen, wenn Sie verschachtelte Ansichten haben und nicht als Argument an die untergeordneten/verschachtelten Ansichten übergeben werden.

Ich habe eine einfache Lösung gefunden, die für mich sehr reibungslos funktioniert:

In Ihrer aktuellen Ansichtsdatei richten Sie Ihr Skript folgendermaßen ein:

$ this-> scripts [] = '/js/myscript.js';

in Ihrer Fußzeile oder in der Datei {whatever.php} fügen Sie diesen Code ein:

    <?php
        if(isset($this->scripts))
        foreach($this->scripts as $script) :
     ?>
            <script src="my_asset_path/js/<?=$script;?>"></script>
    <?endforeach;?>

Wenn Sie nur ein Stück Javascript-Code benötigen, können Sie anonyme Funktionen wie die folgenden verwenden:

<?php
$this->RenderScript[] = function() {
?>
      <script>
        console.log('myjavascript code snippet');
      </script>
<?}?>

und unten:

<?php
        if(isset($this->RenderScript))
            foreach($this->RenderScript as $script) {
                $script();
            }
    ?>
0
Bruno

Verwenden Sie einfach den Standard:

<script src="/path/to/file.js" type="text/javascript" charset="utf-8"></script>

in deiner Sicht! (Natürlich nicht in den Tags PHP.) Ich glaube nicht, dass der CodeIgniter-HTML-Helper über Funktionen verfügt, die Sie als Alternative zum Ausschreiben des HTML-Codes verwenden könnten.

0
chigley