我希望用户能够创建几个不同的文档。每个文档都有自己的视图来创建文档或编辑。
如果他们正在尝试创建的文档已经创建,他们应该会看到该文档的编辑页面。
目前,我有以下
public function create(Project $project)
{
$documentTypesCreated =
$project->document()
->join('document_type', 'documents.id', '=', 'document_type.documentId')
->select('document_type.documentId', 'document_type.name')
->get();
$documentLink = $_GET['documentType'];
if($documentTypesCreated->isEmpty()){
return View::make($documentLink.'Doc.create', compact('project'));
} else {
foreach($documentTypesCreated as $documentName) {
if($documentName->name != $documentLink) {
return View::make($documentLink.'Doc.create', compact('project'));
} else {
$document = Document::find($documentName->documentId);
return View::make($documentLink.'Doc.edit', compact('project', 'document'));
}
}
}
}
打破这个局面,我正在做以下事情: 首先,我获得了为项目创建的所有文档
$documentTypesCreated =
$project->document()
->join('document_type', 'documents.id', '=', 'document_type.documentId')
->select('document_type.documentId', 'document_type.name')
->get();
然后我获取用户试图通过URL创建的文档
$documentLink = $_GET['documentType'];
因此,假设查询返回此Project有的 卡塞尔文献展 DocumentB
documentLink显示我正在尝试创建DocumentB。
由于已经创建了DocumentB,因此我需要此Document的编辑页面。首先,我检查查询是否返回和Documents
if($documentTypesCreated->isEmpty()){
return View::make($documentLink.'Doc.create', compact('project'));
} else {
}
如果没有,它将显示所选文档的创建页面。如果确实如此,那么else语句将会启动。 在else语句中,我遍历查询返回的所有文档
foreach($documentTypesCreated as $documentName) {
}
然后我执行以下操作,这就是我的逻辑失败的地方
if($documentName->name != $documentLink) {
return View::make($documentLink.'Doc.create', compact('project'));
} else {
$document = Document::find($documentName->documentId);
return View::make($documentLink.'Doc.edit', compact('project', 'document'));
}
如果查询中的文档名称与我尝试创建的文档不相等,那么我将显示该文档的创建页面。否则,我会显示编辑页面。
现在让我们回到我选择DocumentB的地方。我知道我已经创建了这个文档,所以我应该看到它的编辑页面。但是,因为DocumentA是查询中返回的第一个结果,所以上面的语句如下所示
if("DocumentA" != "DocumentB") {
return View::make($documentLink.'Doc.create', compact('project'));
} else {
$document = Document::find($documentName->documentId);
return View::make($documentLink.'Doc.edit', compact('project', 'document'));
}
因此它将显示DocumentB的创建页面,而不是编辑页面。如果DocumentB是第一个返回的结果,则会显示编辑页面。
我希望这是有道理的。如何让它显示文档的正确视图?
由于
答案 0 :(得分:1)
根据您的查询 - 您可以手动设置这些变量
$create = true;
$edit = false;
<强>逻辑强>
if ($query == 'any logic') {
$create = true;
$edit = false;
}else{
$create = false;
$edit = edit;
}
然后,将它们发送到您的视图。
@if($create == true)
//.. Show Create Form
@else
// .. Show Edit Form
@stop
然后,您的视图将根据您的查询结果呈现。我希望这有帮助!