doutang2017
2016-06-24 09:37
浏览 58
已采纳

symfony中PHP文件的路径

I am practicing unit test for AJAX call in Symfony 2.8.

Here is my code in a .js file. I call it in my TWIG :

<script>
QUnit.test("test dynamic fill", function (assert) {
            var ajax = $("#ajax"); //my div to fill
            $("#feed_the_ajax").click(function () {
                $.ajax({
                    url: "echo.php",
                    type: "POST",
                    data: {text: "Hello world !"},
                    success: function (data) {
                        ajax.text(data);
                    },
                    error: function () {
                    }
                });
                assert.ok(!ajax.text() == "Hello world !", "Hello !");
            });
            assert.ok(!ajax.text() == "Hello world !", "Answer me ...");
        });
</script>

echo.php file is just like this :

<?php
if($_POST['text'] != ""){
    return $_POST['text'];
}

When I run the code, it tells me that "echo.php" is not found. I guess that I have to specify the route for the file.

I didn't modify anything in the server configuration. Here is my config.yml file :

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }

# Put parameters here that don't need to change on each machine where the app is deployed
# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
locale: en

framework:
    #esi:             ~
    #translator:      { fallbacks: ["%locale%"] }
    secret:          "%secret%"
router:
    resource: "%kernel.root_dir%/config/routing.yml"
    strict_requirements: ~
form:            ~
csrf_protection: ~
validation:      { enable_annotations: true }
#serializer:      { enable_annotations: true }
templating:
    engines: ['twig']
default_locale:  "%locale%"
trusted_hosts:   ~
trusted_proxies: ~
session:
    # handler_id set to null will use default session handler from php.ini
    handler_id:  ~
fragments:       ~
http_method_override: true

# Twig Configuration
twig:
debug:            "%kernel.debug%"
strict_variables: "%kernel.debug%"

# Doctrine Configuration
doctrine:
dbal:
    driver:   pdo_mysql
    host:     "%database_host%"
    port:     "%database_port%"
    dbname:   "%database_name%"
    user:     "%database_user%"
    password: "%database_password%"
    charset:  UTF8
    # if using pdo_sqlite as your database driver:
    #   1. add the path in parameters.yml
    #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
    #   2. Uncomment database_path in parameters.yml.dist
    #   3. Uncomment next line:
    #     path:     "%database_path%"

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true

# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host:      "%mailer_host%"
username:  "%mailer_user%"
password:  "%mailer_password%"
spool:     { type: memory }

Thanks for your answers, Telest

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • douqiao6563 2016-06-24 11:03
    已采纳

    Your server does not allow anything else as app.php or app_dev.php.

    For example if your server is NginX and you use the recommanded NginX configuration :

    http://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html#nginx

    You have this block, which throws your 404 error ... :

    # return 404 for all other php files not matching the front controller
    # this prevents access to other php files you don't want to be accessible.
    location ~ \.php$ {
      return 404;
    }
    
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题