2010-11-28 7 views
0

Je développe actuellement une application facebook canvas (iframe). Est-il possible d'obtenir le Zend Framework pour les URL de sortie comme ceci:Zend framework facebook rediriger l'URL vers l'application de l'application canvas

http://app.facebook.com/appName/controller/action 

intead d'obtenir

http://www.domain.com/controller/action ? 

Il est pas si important car en raison de iframe tout application basée fonctionne bien, mais je d aiment fournir l'expérience d'utilisateur meilleure et obtenir l'url

http://app.facebook.com/appName/ 

est pas convivial du tout. Probablement la solution est très facile mais je suis complètement "pile". L'application est divisée aux modules afin que je puisse changer qqch dans Boostrap.php qui est probablement de tenir la solution sous mon nez, mais je ne peux pas le voir ..: -/

EDIT: Peut-être que je n'ai pas exprimé comme je devrais l'avoir. Le problème n'est pas dans facebook. Le problème est dans zend lui-même. Il sort l'adresse de l'application d'origine (par exemple myapp.example.com) URL et je souhaite la sortie http://app.facebook.com/myapp

Merci d'avance.

Lukas

+0

Je ne suis pas Bien sûr, si je l'ai bien compris, mais je suppose que vous cherchez à créer DNS Enregistrement CNAME ou comme il a appelé alias, donc si vous avez fait un alias vous n'auriez pas besoin de changer quelque chose dans votre application ZF, par exemple si vous créez un enregistrement CNAME de google.com avec le nom "blahblah.com", vous seriez en mesure de parcourez google.com avec ce RECORD. – tawfekov

Répondre

0

Enfin, j'ai réussi à résoudre ce problème. Donc pour les autres développeurs, je poste ici ma solution.

Le soulition est d'être honnête un peu compliqué, mais:

Use Zend_Controller_Router_Route_Hostname 

L'exemple d'utilisation se trouve dans http://framework.zend.com/manual/en/zend.controller.router.html la puis la chaîne avec itinéraire classique comme:

$hostnameRoute = new 
    Zend_Controller_Router_Route_Hostname(
        ':username.users.example.com', 
        array(  
        'controller' => 'profile', 
        'action'  => 'userinfo' 
      ) 
    ); 
$plainPathRoute = new Zend_Controller_Router_Route_Static(''); 
$router->addRoute('user', $hostnameRoute->chain($plainPathRoute); 
0

Je ne suis pas sûr de ce que votre question est mais Facebook déjà les cartes URL qu'il reçoit à votre application. Par exemple, si votre URL de canevas est définie sur http://domain.com/ et qu'un utilisateur entre http://apps.facebook.com/appName/controller, il sera mappé sur http://domain.com/controller par Facebook.

Il fonctionne de cette façon pour les applications canvas/fbml et iframe.

Pour faire Zend Framework générer des URL avec une base autre (ex: http://apps.facebook.com/appName), vous pouvez le faire dans votre bootstrap:

protected function _initBaseUrl() {   
    $front = $this->getResource('frontcontroller'); 
    $front->setBaseUrl('http://apps.facebook.com/appName/'); 
} 

Si vous n'utilisez pas le bootstrap, vous pouvez obtenir une instance de votre front contrôleur d'une manière alternative et faire ceci:

$front = Zend_Controller_Front::getInstance(); 
    $front->setBaseUrl('http://apps.facebook.com/appName/'); 
+0

Peut-être que je ne l'ai pas exprimé comme je devrais l'avoir fait. Le problème n'est pas dans facebook. Le problème est dans zend lui-même.Il génère l'URL de l'application d'origine (par exemple myapp.example.com) et je souhaite la sortie http://app.facebook.com/myapp – Bery

+0

Je comprends. Je vais mettre à jour ma réponse. –

+0

Salut, merci beaucoup - Je vais poster mon code final, mais un autre problème est survenu. L'application dit maintenant "contrôleur Invallid spécifié" et je ne peux pas dire pourquoi :-( – Bery

Questions connexes