【问题标题】:Define base url for laravel定义 laravel 的基本 url
【发布时间】:2013-09-18 09:07:52
【问题描述】:

我是 laravel 的新手。我唯一控制器的网址是

http://localhost/myapp/public/users

在表单功能的视图中,我不想为 post 功能做一个绝对路径,例如

<form method='post' action='/myapp/public/user/update-user'>

我只想将用户控制器设置为基本 url 路径,这样我就可以在我的表单中说

<form method='post' action='/update-user'>

这可能吗?

【问题讨论】:

  • 你不能用路由来做这个吗?此外,您的 URL 不应该是 /myapp/public/user/update-user,它们应该没有 /myapp/public。可能你的 Laravel 安装配置不正确?
  • 啊,也许是这样。你能指导我如何正确配置它吗?
  • 我对路线世界也完全陌生,所以我不知道该怎么做!我一直在寻找,但我无法引用。
  • 你是通过 composer 安装 Laravel 的吗?而且路线一开始可能很难掌握,我建议和他们一起玩,试着让他们工作,一旦你觉得你不能再进步了,就发一个问题来说明你需要什么
  • 是的,我是通过 composer 安装的。好的,我会这样做的,谢谢。你能告诉我我需要编辑什么才能从我的网址中丢失 myapp/public 部分吗?

标签: php laravel


【解决方案1】:

使用 URL::to() 或者简单地使用 laravel 形式 {{Form::open(array('url'=>'route_name'))}}

【讨论】:

    【解决方案2】:

    你可以使用 URL::to() 函数。Laravel 支持 RESTful API 或 RESTful 路由。所以像这样使用路由不是一个好主意。所以使用like, 在 app/routes.php

    // for view (GET)
    Route::get('users', function(){
       View::make('users');
    });
    
    Route::post('users', function(){
      // do form validation and process here or call a function from controller
    });
    

    然后在你的表单中使用,

    echo Form::open();
    // form elements
    echo Form::close();
    

    【讨论】:

      【解决方案3】:

      是的,这是可能的,但它有点复杂,因为 laravel 并没有真正设置为支持这一点。

      您需要更改文件vendor/laravel/framework/src/Illuminate/Http/Request.php,将函数root() 替换为:

      public function root($domain = NULL)
      {
          return rtrim(($domain?:$this->getSchemeAndHttpHost()).$this->getBaseUrl(), '/');
      }
      

      然后在vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php文件中的getRootUrl($scheme, $root = null)方法中你需要更改这一行:

      $root = $root ?: $this->request->root();
      

      到这里:

      $root = $this->request->root($root);
      

      这应该允许 laravel 自动检测和正确处理子文件夹,因此您将能够使用标准的 URL 方法。

      【讨论】:

        【解决方案4】:

        首先,您需要使用虚拟主机或 Web 服务器中的别名(apache 或 ...)隐藏 URL 的 /public/ 部分。入口点(http://some.host/alias/http://some.virtual.host/)应直接指向公用文件夹(即 /whatever/path/myapp/public/)。

        其次,使用路线,您可以轻松完成剩余的工作。路线

        Route::get('update_users', "UsersController@updateAction")
        

        http://whatever.host/update_users 重定向到正确的操作,而不需要丑陋的格式。

        【讨论】:

          猜你喜欢
          • 2016-03-13
          • 2022-09-26
          • 2014-05-28
          • 2016-05-20
          • 2018-02-28
          • 2015-09-24
          • 2021-08-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多