我认为我理解Laravel中的命令概念,因为它是放置可重用代码的好地方,可以从控制器等调用,但我有一个查询:
我可以从命令返回一个值回调用方法吗?例如,我有一个控制器方法,它在Active Directory中创建一个用户,为此有一个命令来执行此操作。如果AD服务器无法访问,我想将响应返回给调用控制器方法。这可能吗?
It only shows in the documentation如何使用dispatch()
调用命令,但没有关于它是否可以返回任何内容的信息。
如果您无法返回值,有人可以解释为什么您不想返回值的原因吗?我知道排队的命令可能需要一段时间而不适合等待响应,但是对于应该立即执行的命令,我不明白为什么你不想返回一个值。
感谢任何帮助或建议。
答案 0 :(得分:7)
在命令总线的上下文中,是的,您可以返回非排队命令的值。在命令处理程序方法中,只需返回您想要的内容:
jsonInput = "{
'PERSON' : {
'FNAME': 'John';
'LNAME': 'Doe',
'CITY': 'Vancuver'
}
}";
Public class Person{
public Person(string json,string city,string country){
JObject jObject = JObject.Parse(json);
JToken jPerson = jObject["PERSON"];
FNAME= (string) jPerson ["FNAME"];
LNAME= (string) jPerson ["LNAME"];
COUNTRY = country:
CITY= ((string) jPerson ["CITY"] == string.Empty)?city:(string) jPerson ["CITY"]; //IF CITY PROPERTY EMPTY USE CITY ELSE USE JSON PROPERTY
}
public string FNAME{ get; set; }
public string LNAME{ get; set; }
public string CITY{ get; set; }
public string COUNTRY{ get; set; }
}
并将调度命令的结果保存到变量:
public function handle(){
return 'foobar';
}
答案 1 :(得分:2)
命令不用于在控制器中存储可重用代码。它们被重命名为5.1中的工作,其主要目的是作为Cron Jobs工作。如果您有创建用户的方法并希望在许多地方使用它,则可以将其存储在用户模型中。