我有一个Laravel安装,我希望在其上运行3个站点(插件域)。我正在使用Laravel的路由分组方法来获取每个域。但是,我需要能够知道我在每个组内部使用哪个域。做这个的最好方式是什么?我有以下代码:
Route::group(array('domain' => 'domainone.com'), function($domain = 'domainone')
{
Route::get('/', function($domain) {
//
});
});
^哪个不起作用。
notes建议在网址中使用通配符,例如
Route::group(array('domain' => '{domain}.com'), function()
{
Route::get('/', function($domain) {
//
});
});
但是,我更喜欢不同的方法,因为在本地服务器上进行开发时我无法真正使用它。有没有什么方法更像我的第一种方法,我可以手动为每个域声明一个键?
编辑:我还需要将该域变量传递给控制器,我也在努力解决该怎么做?
感谢。
编辑2
我的问题是我没有使用子域名,我正在使用域名;我有3个独立的域,用于在同一Laravel安装上运行的3个姐妹站点。所以我有3个路由组,每个域一个。此外,我不希望每次使用{domain}.com
请求域名变量,我想告诉在每种情况下Laravel域名,然后传递该域名作为每个组内适当控制器的变量。这是我的示例代码:
$domain1 = 'domain1.com';
$domain2 = 'domain2.com';
$domain3 = 'domain3.com';
Route::group(array('domain' => $domain1), function(){
Route::get('/', 'PrimaryController@somefunction1'); // <-- I want to access $domain1 in my controller
});
Route::group(array('domain' => $domain2), function(){
Route::get('/', 'PrimaryController@somefunction2'); // <-- ...and $domain2
});
Route::group(array('domain' => $domain3), function(){
Route::get('/', 'PrimaryController@somefunction3'); // <-- ...and $domain3
});
答案 0 :(得分:1)
这是第一种方法的选项:
$domain = 'domainone';
Route::group(array('domain' => $domain.'.com'), function() use ($domain)
{
Route::get('/', function() use ($domain) {
echo "$domain";
});
});
您可以通过群组将喜欢的watever传递给您的控制器,您只需再添加一个级别。
$subdomain = 'atlanta';
$domain = 'domainone';
Route::group(array('domain' => "$subdomain.$domain.com"), function()
{
Route::group(array('domain' => '{subdomain}.{domain}.com'), function()
{
Route::get('testdomain', function($subdomain, $domain) {
dd("closure: subdomain: $subdomain - domain: $domain");
});
Route::get('testdomaincontroller', 'FooController@index');
});
});
通过执行此操作,您必须了解传递给控制器操作的前两个变量将始终为$ subdomain和$ subdomain。这是一个显示它的控制器,您也可以使用它来测试这些路径:
class FooController extends Controller {
public function index($subdomain, $domain)
{
dd("controller: subdomain: $subdomain - domain: $domain");
}
}
您将有两条不同的路线:
http://yourdomain.dev/testdomain
http://yourdomain.dev/testdomaincontroller
答案 1 :(得分:0)
我通过以下两个步骤完成此任务:
首先,使用Laravel文档示例,我将子域名拉下来并将其分配给{account}。
Route::group(array('domain' => '{account}.myapp.com'), function()
从此处,您分配给此组中的路径的任何控制器都可以将此 {account} 数据注入其功能。
注意:您无法在构造函数中访问它。 Controller中需要使用此数据的每个功能都需要为其创建一个参数。像这样:
/**
* The $subdomain variable below will capture the data stored in
* {account} in your route group. Note that you can name this variable
* anything you'd like.
*/
public function showCreateBankAccount($subdomain) {
echo "This is your subdomain: " . $subdomain;
}