generateUrl sorun

2 Cevap php

Ben bir url oluşturmak için çalışıyorum ama çalıştığını bile garip bir uyarı alıyorum. Ben bir api xml sayfa yapıyorum ve ben denetleyicisi aşağıdaki çağrıyı kullanın:

public function executeList(sfWebRequest $request)
{
    $this->users = array();
    foreach($this->getRoute()->getObjects() as $user)
    {
        $this->users[$this->generateUrl('user_show', $user, true)] = $user->asArray($request->getHost());
    }
}

Aşağıdaki gibi user_show yol şu şekildedir:

# api urls
user_show:
  url:   /user/:nickname
  param: { module: user, action: show }

Ve xml çıkışları aşağıdaki gibidir:

<br />
<b>Warning</b>:  array_diff_key() [<a href='function.array-diff-key'>function.array-diff-key</a>]: Argument #1 is not an array in <b>/opt/local/lib/php/symfony/routing/sfRoute.class.php</b> on line <b>253</b><br />
<br />
<b>Warning</b>:  array_diff_key() [<a href='function.array-diff-key'>function.array-diff-key</a>]: Argument #1 is not an array in <b>/opt/local/lib/php/symfony/routing/sfRoute.class.php</b> on line <b>253</b><br />

<br />
<b>Warning</b>:  array_diff_key() [<a href='function.array-diff-key'>function.array-diff-key</a>]: Argument #1 is not an array in <b>/opt/local/lib/php/symfony/routing/sfRoute.class.php</b> on line <b>253</b><br />
<?xml version="1.0" encoding="utf-8"?>
<users>
  <user url="http://krowdd.dev/frontend_dev.php/user/danny">
    <name>Danny tz</name>
    <nickname>danny</nickname>
    <email>comedy9@gmail.com</email>
    <image></image>
  </user>
  <user url="http://krowdd.dev/frontend_dev.php/user/adrian">
    <name>Adrian Sooian</name>
    <nickname>adrian</nickname>
  </user>
</users>

Bu yüzden doğru xml çıktılar ama generateurl yöntemini çağırırken uyarı thows atıyor neden bilmiyorum.

Teşekkürler!

2 Cevap

Bu generateUrl imzası olan:

public function generateUrl($route, $params = array(), $absolute = false)

Pay special attention to the second parameter. It should be an array in case of a regular route, however: if your route is an sfPropelRoute or its doctrine equivalent, it can be an object.
I believe you get those errors because the route is not defined as an sfPropelRoute (or doctrine).

Peki, uyarı işlevi array_diff_key ilk parametre olarak bir dizi bekliyor, ama onun bir almıyorum, oldukça özeldir ...

Ben Symfony bilmiyorum, ama hata, bu dosya symfony / yönlendirme / sfRoute.class.php satırında 253 oluyor görebilirsiniz etti ..

Yani, o dosya o hattını arayarak bazı işlevini çağırıyor.

Sana debug_backtrace kod akışını takip kullanmak edildi ve bir dizi olmalıdır değişken ekleyerek bulmak için deneyebilirsiniz düşünüyorum ama değil.