2017-08-31 1 views
0

ich mein Problem mit dem Code erklären:Mojolicious App conrollers doesn t die Vorlage machen sie machen sollte


zuerst meine app (ls -R): /Kantine Controller kantine.conf kantine.pl Kantine .pm Vorlagen

Kantine/Controller: Restaurant.pm Sandwich.pm

Kantine/templates: cantine.html.ep


Ich starte es unter Hypnotoad mit dem Befehl "hypnotoad kantine.pl". Alles ist in Ordnung

Kantine/kantine.pm:

package Kantine; 
use strict; 
use warnings; 

use Mojo::Base 'Mojolicious'; 

sub startup 
{ 
    my $self = shift; 
    my $config = $self->plugin('Config'); 

    my $r = $self->routes; 
    $r->get('/restaurant')->to('restaurant#loadData'); 
    $r->get('/sandwich')->to('sandwich#loadData'); 
    $r->get('/test')->to(template => 'cantine'); 
} 

1; 

Kantine/Controller/Restaurant:

Paket Controller :: Restaurant;

use strict; 
use warnings; 

use Mojo::Base 'Mojolicious::Controller'; 

sub loadData 
{ 
    my $self = shift; 
    $self->render('cantine'); 
} 

1; 

"curl http://127.0.0.1:3000/test" funktioniert gut (bekam eine leere Seite), aber "curl http://127.0.0.1:3000/restaurant" nicht (GOT Seite nicht gefunden). Und ich verstehe nicht warum! Wenn Sie sehen, was falsch ist ..

Thx!

+0

Rechtschreibfehler? Sie haben 'loadData' an einer Stelle und' loadDate' an der anderen Stelle (Danke, dass Sie Ihren echten Code ausgeschnitten und eingefügt haben). – mob

+1

Korrigiere es, aber es scheint, dass da etwas mehr ist! Ich werde es in der Post auch thx bearbeiten! Ich füge eine Log-Datei hinzu und es sagt mir, dass "Controller" Kantine :: Restaurant "nicht existiert", ich werde versuchen zu sehen, warum :) –

Antwort

1

Ich bin mir ziemlich sicher, dass alle Orte, die Sie Controllers verwendet haben, stattdessen Controller (Singular) sein sollten. Die Route /test funktioniert, weil Mojolicious die Vorlage in templates finden kann, jedoch nicht in Controllers, so dass Controllers::Restaurant nicht gefunden werden kann.

+0

Ja meine Pfade waren falsch, ich habe keinen Zugriff mehr auf die Datei Ich kann mir nicht sicher sein, aber Sie müssen in der Nähe sein. –