link_to () başarıyla rota üretir, ama bir 404 yılında bu bağlantı sonuçlarını tıklayarak

7 Cevap php

Ben bir website kurdum. Ben denemek ve gibi bir linke tıklarsanız register Ben şu hatayı alıyorum:

404 | Not Found | sfError404Exception
Empty module and/or action after parsing the URL 
    "/trevelyan.alumni/register" (/).

Bağlantılar kullanılarak üretilir

<?php 
    print link_to( 'Register', 'register/index' ); 
?>

Ve ben apps / frontend / modules / kayıt içinde bir 'kayıt' modülü var.

Ben Symfony için oldukça yeni, herhangi bir yardım takdir!


routing.yml:

# default rules
homepage:
  url:   /
  param: { module: home, action: index }

default_index:
  url:   /:module
  param: { action: index }

default:
  url:   /trevelyan.alumni/:module/:action/*

7 Cevap

Senin sorun, bir "alt-site" üzerinden Symfony çalışan yerine doğrudan "kök" url off (http://www.dur.ac.uk/trevelyan.alumni yerine http://www.dur.ac.uk/) konum olduğunu düşünüyorum. Ben kolay çözüm routing.yml tüm URL'ler önüne trevelyan.alumni eklemek olacağını düşünüyorum.

Örneğin, default yol için, yerine

default:
  url: /:module/:action/*

kullanmak

default:
  url: /trevelyan.alumni/:module/:action/*

Steven Oxley okuyun, ama hem de bu deneyin:

Eğer modül dir en az bir eylem sınıfı var Giriş with the proper name (symfony harf duyarlıdır ve bu çok zordur).

Bunu yaparsanız, (modül yapılandırma dosyaları) varsayılan eylem modülünde eylem sınıfının biri olduğunu kontrol edin.

Önbelleğe bir config dosyası değiştirmek her zaman temizlemek için unutma.

Ben bir tane buldum değilse, bir modül almak için $ _SERVER değişkenleri kullanmak için symfony kontrolör dosyalarını düzenleyerek bu sorunu gidermek için başardı.

Lütfen routing.yml dosyanın sonunda:

homepage:
  url:   
  param: { module: main, action: index }

default:
  url:   /:module/:action/*

ve sonra önbelleği temizlemek için unutma ;)

Etkili olması için yönlendirme değişiklik (ler) için sadece hızlı bir not, size Symfony açık önbellek çalıştırmanız gerekir:

./symfony clear-cache

çünkü varsayılan yönlendirme kuralları rota için eşleşen url bir nokta kaldırmak gerekir

için varsayılan rotayı değiştirin:

default:
  url: /trevelyan_alumni/:module/:action/*

ve bu çalışması gerekir. Bu nokta (.) _ ile değiştirilir unutmayın

Ben 1.4 'symfony 1.2 yükseltilmiş vardı ve bu sorunu olmamdı. Günün sonunda, esas olarak bütün yapı dosyaları şekilde kırdı yönlendirme noktasına kadar değişti. App config dosyaları geçiyor ve lib / satıcı / symfony / lib / config / config (veya Symfony'nin tutuyor şimdiye kadar) bulunan "yeni uygulama" şablonlar karşı onları güncelleme / karşılaştırarak bu sorunu düzeltildi.