使用破折号的Laravel自定义命令参数

时间:2016-02-18 22:40:13

标签: php laravel laravel-5

我在Laravel 5中获得了一个自定义命令,它获取用户名和密码。

一个用户的密码以短划线开头,如-819830219',使laravel返回错误,说“-8选项不存在。

我尝试在引号之间设置密码,但仍然遇到同样的错误。

有没有办法传递一个以laravel无法理解的破折号开头的参数?

protected function getArguments()
{
    return [
        ['username', InputArgument::REQUIRED, 'Partner\'s username.'],
        ['password', InputArgument::REQUIRED, 'Partner\'s password.'],
        ['origin', InputArgument::REQUIRED, 'Partner\'s origin code.'],
    ];
}

2 个答案:

答案 0 :(得分:5)

您可以通过-之前的--字符来转义php artisan command -- -819830219 字符。

public function handle()
{
    $username = $this->ask('Enter username');
    $password = $this->secret('Enter password');
    $origin = $this->ask('Enter origin');
    $this->doSomething($username, $password, $origin);
}

或者你可以使用这样的交互式命令:

module Appointments
  module Events
    def say_alert
      puts self.class::ALERT
    end
  end
end

class Appointment 
  include Appointments::Events

  ALERT = "hello!"

end

Appointment.new.say_alert

答案 1 :(得分:0)

我一直处于同样的境地,这似乎是争论的问题。

询问交互式的另一个选择是使用选项,使用选项不会发生此问题。

例如

protected $signature = 'project:command {--profile=} {--tz=}';

然后

$profile_id = $this->option('profile', ''); $timezone = $this->option('tz', '+00:00');

对命令的调用将如下所示

artisan project:command --profile=1609 --tz=-04:00

此致