I've been hitting my head against a wall all day trying to figure out
why I can't get REST functionality working in my project, and I seem
to have hit the following problem:

REST worked great when I use symfony generated links with link_to, or
using symfony generated forms. But I cannot for the life of me get
REST to work using xhr methods.

I'm currently using Dojo 1.4.1, and I'm trying to delete an entity
using REST. However, whenever I submit the request to the server using
xhrPost or xhrDelete, the symfony routing sends me to the "show"
action and not the "delete" action.

I would greatly appreciate it if someone could take a look at the
information below and let me know what I'm doing wrong…

Here's the routing:

        email_usage_show:
                url:  /email/usage/:id.:sf_format
                param:
                        module: addressUsage
                        action: showEmailAddressUsage
                requirements:
                        sf_method: get
                        id: \d+

        email_usage_delete:
                url: /email/usage/:id.:sf_format
                class: sfDoctrineRoute
                options:
                        model: AddressUsage
                        type: object
                param:
                        module: addressUsage
                        action: deleteEmailAddressUsage
                        sf_format: json
                requirements:
                        sf_method: delete
                        id: \d+

Here's the symfony link that *does* work:

        <a href="/frontend_dev.php/email/usage/4
                onclick="if (confirm('Are you sure?')) {
                        var f = document.createElement('form');
                        f.style.display = 'none';
                        this.parentNode.appendChild(f);
                        f.method = 'post';
                        f.action = this.href;
                        f.target = 'newPage';
                        var m = document.createElement('input');
                        m.setAttribute('type', 'hidden');
                        m.setAttribute('name', 'sf_method');
                        m.setAttribute('value', 'delete');
                        f.appendChild(m);f.submit();
                };
                return false;">!!DELETE!!</a>

Here's the dojo xhrPost that *doesn't* work:

        dojo.xhrDelete ({
                url: '/frontend_dev.php/email/usage/4',
                handleAs: 'json',
                content: {sf_format: 'delete'},
                load: dojo.hitch(this, this.onDeleteSuccess),
                error: dojo.hitch(this, this.onDeleteFailure)
                });

Here's the FireBug output from the symphony link:

        Response Headers
                HTTP/1.1 200 OK
                Date: Tue, 02 Mar 2010 21:55:17 GMT
                Server: Apache
                X-Powered-By: PHP/5.2.11
                Content-Length: 1
                Keep-Alive: timeout=15, max=100
                Connection: Keep-Alive
                Content-Type: text/html

        Request Headers
                POST /frontend_dev.php/email/usage/4 HTTP/1.1
                Host: localhost
                User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; 
en-US;
rv:1.9.2) Gecko/20100115 Firefox/3.6
                Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
                Accept-Language: en-us,en;q=0.5
                Accept-Encoding: gzip,deflate
                Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
                Keep-Alive: 115
                Connection: keep-alive
                Referer: http://localhost/frontend_dev.php/person/3
                Cookie: symfony=50f8abe372aeaf0e80ce559ad926fb9c

        Parameters - application/x-www-form-urlencoded
                sf_method       delete

        Source
                Content-Type: application/x-www-form-urlencoded
                Content-Length: 16

                sf_method=delete

        Response
                4

Here's the FireBug output from the dojo xhrPost that *doesn't* work:

        Response Headers
                Date: Tue, 02 Mar 2010 22:00:10 GMT
                Server: Apache
                X-Powered-By: PHP/5.2.11
                Content-Length  442
                Keep-Alive: timeout=15, max=73
                Connection: Keep-Alive
                Content-Type: application/json

        Request Headers
                Host: localhost
                User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; 
en-US;
rv:1.9.2) Gecko/20100115 Firefox/3.6
                Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
                Accept-Language: en-us,en;q=0.5
                Accept-Encoding: gzip,deflate
                Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
                Keep-Alive: 115
                Connection: keep-alive
                Content-Type: application/x-www-form-urlencoded; charset=UTF-8
                X-Requested-With: XMLHttpRequest
                Referer: http://localhost/frontend_dev.php/person/3
                Content-Length: 84
                Cookie: symfony=50f8abe372aeaf0e80ce559ad926fb9c

        Parameters - application/x-www-form-urlencoded
                sf_method       delete

        Source
                Content-Type: application/x-www-form-urlencoded
                Content-Length: 16

                sf_method=delete

        Response
                { JSON data for address 4 }

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en

Reply via email to