Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Kohana Routing

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Kohana Routing

    Hallo PHPler,

    ich arbeite seit kurzem mit dem Kohana Framework und verstehe das Routing noch nicht so ganz. Ich möchte eine neue Route erstellen:

    "url.de/info/Artikel+Name"
    Also theoretisch:
    "url.de/<controller>(/<id>)"

    Also habe ich in meiner bootstrap.php folgendes angelegt:

    PHP-Code:
    Route::set('info''<controller>(/<id>)')
        ->
    defaults(array(
            
    'controller' => 'info',
            
    'action'     => 'index'
        
    )); 
    Ich möchte in meiner Index Action also die ID verarbeiten und das passende aus der Datenbank holen.

    Allerdings:

    1. Wenn ich "info/irgendwas" aufrufe bringt er mir den Fehler, dass "action_irgendwas" nicht gefunden wurde (Ich folgere daraus die Route ist falsch)
    2. Ich weiß noch nicht wie ich in der Action die ID abfragen kann.

    Die Dokumentation selber brachte mich noch nicht weiter.

    Vielen Dank,

    Max


  • #2
    Die Syntax ist bei dir auch so nicht richtig. Wenn denn sollte das Ganze so ungefähr aussehen:

    PHP-Code:
    Route::set('info''(<controller>(/<id>))')
        ->
    defaults(array(
            
    'controller' => 'info',
            
    'action'     => 'index'
        
    )); 

    Kommentar


    • #3
      Hallo,

      habe das geändert und ich kriege trotzdem den Fehler:

      ReflectionException [ 0 ]: Method action_irgendwas does not exist

      Kommentar


      • #4
        Hmm okay, ich glaub das was ich da geschrieben habe, war auch falsch, aber nen bissel Eigeninitiative musst du bei Kohana schon mitbringen, sonst bist du alle zwei Stunden hier...

        PHP-Code:
        Route::set('info''<controller>(/<id>)',
          array(
            
        'controller' => '(info)'
          
        ))->defaults(array(
            
        'action' => 'index'
          
        )); 
        Im Zweifeld hier: Routes, URLs, and Links | Kohana User Guide noch mal vorbeischaun.

        Kommentar


        • #5
          Hallo,

          das kommt aufs selbe hinaus. Wenn ich /info/irgendwas aufrufe kommt der Fehler, wenn ich /info/index/irgendwas aufrufe gehts. Kann es sein, dass die default Route das ganze beeinflusst?

          Kommentar


          • #6
            Wie sieht die denn aus?

            Ich habs jetzt bei mir mal getestet. Folgendes läuft bei mir ohne weiteres:

            PHP-Code:
            Route::set('info''info(/<id>)')->defaults(array(
                
            'controller' => 'welcome',
                
            'action' => 'index'
            )); 

            Kommentar


            • #7
              Guten Morgen,

              meine DefaultRoute sieht so aus:

              PHP-Code:
              Route::set('default''(<controller>(/<action>(/<id>)))')
                  ->
              defaults(array(
                      
              'controller' => 'home',
                      
              'action'     => 'index',
                  ));
              Route::set('info''info(/<id>)')->defaults(array(
                  
              'controller' => 'info',
                  
              'action' => 'index'
              )); 
              So funktioniert es nicht. Wenn ich /info/index/irgendwas aufrufe (also nach dem Schema von Default) funktioniert alles wunderbar. Nur die zweite Route wird ignoriert.

              Muss denn was im Controller geändert werden, damit er die Zweite Route nimmt?

              Grüße,
              Max

              Kommentar


              • #8
                Okay. Problem alleine gelöst. So simpel die Lösung:

                Die Info Route muss vor die default Route, dann geht alles.

                Kommentar


                • #9
                  Hmm aber richtig zu sein scheint das nicht... weil sobald die Routen dynamisch (zum Beispiel aus ner Datenbank) zusammengebaut werden bekommst du nen echtes Problem... Ich werd mal sehn obs dazu schon nen Issue gibt...

                  Kommentar


                  • #10
                    Ich kenne zwar Kohana nicht, aber das hört sich für mich normal an. Wenn default zuerst kommt dann würde ja immer diese zutreffen! Daher müssten alle custome Routen zuerst kommen, wird keine davon gefunden wird eben die default angewendet ...

                    Kommentar


                    • #11
                      Zitat von Flor1an Beitrag anzeigen
                      Ich kenne zwar Kohana nicht, aber das hört sich für mich normal an. Wenn default zuerst kommt dann würde ja immer diese zutreffen! Daher müssten alle custome Routen zuerst kommen, wird keine davon gefunden wird eben die default angewendet ...
                      Klingt normal ist aber denn schlecht implementiert... Weil wenn ich solche Konstrukte hier habe:
                      PHP-Code:
                      Route::set('info''info(/<id>)')->defaults(array(
                          
                      'controller' => 'info',
                          
                      'action' => 'index'
                      ));
                      Route::set('hans''info/hans')
                          ->
                      defaults(array(
                              
                      'controller' => 'info',
                              
                      'action'     => 'hans',
                          )); 
                      Hab ich schon verloren, weil sicher der Controller info, mit der Action index aufgerufen und der Parameter id ist hans, obwohl die zweite Route vom Matching her höher stehen sollte...

                      Kommentar

                      Lädt...
                      X