我有一个Laravel Spark应用程序,并希望在团队和项目的路径中使用前两个参数,例如about_us,settings,api等.
我设置了我的路线,类似于:
Route::pattern('team', '[a-zA-Z0-9-]+');
Route::pattern('project', '[a-zA-Z0-9-]+');
Route::get('/home', 'HomeController@show');
Route::group(['prefix' => '{team}'], function () {
Route::get('/', 'TeamController@dashboard');
Route::group(['prefix' => '{project}'], function () {
Route::get('/', 'ProjectController@dashboard');
...
//Spark defines routes such as /settings after the apps routing file is processed;
//thus I cannot route to /settings as it's caught by /{team}.
Run Code Online (Sandbox Code Playgroud)
我正在努力做两件事之一.或者,从{team}模式中排除'api','settings'等值; 或者让Laravel Spark路由在我的Web路由之前运行,这样我就可以确保在全局/ {team}之前检查所有有效路由.
任何想法,将不胜感激!
这可能有点主观,但我认为必须存在最佳实践(甚至在Laravel应用程序方面甚至是好的设计)。谷歌搜索导致很多事情与该问题的实际观点无关。
假设我正在构建一个具有团队的Web应用程序,该团队可能包含项目,可能包含文档。
我是否应该设计工艺路线,使文档位于其所属项目的路径之内,然后位于其所属团队的路径之内,还是将其保留在顶层?
据我所知,该频谱的两端值得讨论(其他选项只是中间的灰色):
套料
例如,可以在以下位置找到Doc C:/ teams / team-a / projects / project-b / documents / doc-c
这很容易做到,在路由文件中,我可以使用路由组来帮助保持结构整洁。我认为这对用户来说更合乎逻辑,并且也许更方便(他们可以自己制定URL!)。我担心的是我正在将复杂性导入每个页面请求中:
我是否应该在每个控制器方法的开头,对于每个路由参数都对每个资源进行门/策略检查?否则,在哪里可以抽象?
关于路由完整性,我从未见过为此进行测试的示例-那么这不是常见的方法吗?如果我们不验证路线的完整性,那么页面可能会通过修改路线来显示混合信息(例如,/ teams / team-a / projects / project-Z / documents / doc-c将在文档上显示有关项目Z的信息-c页面)。
没有嵌套
例如,可以在以下位置找到Doc C:/ documents / doc-c
在此示例中,每个资产都有其自己的基本路线,更像是我猜想的API。
不需要完整性检查,并且控制器将预先确定显示的其他资产以生成视图。
但是这个UX足够好吗?我见过的大多数网站都不这样做。
我的问题:我打算在数据库中存储一个"项目",其中一个项目由多个项目组成,例如文档,每个文档都有多个项目,例如段落.段落可以交叉引用其他文件中的段落.存在许多团队,每个团队可能有很多项目.团队成员编辑,更新和优化交叉引用文档的位置,直到他们满意为止,然后审阅文档或项目.
在审核后发布文档时,将保留已颁发的状态,并且对新的暂存/当前状态进行任何更改.
项目发布时,将对其进行全面审核和发布.然后在该问题中保留文档集,内容和交叉引用,以便在整个项目中捕获状态.然后,将以下任何编辑应用于新的临时/当前版本,使发布的集合可以在问题点处进行读取.
我考虑过使用典型的数据库设置,但我担心a)存储的行数会很快增长; 和b)找到"当前"集合,或任何特定项目的集合将太复杂/脆弱,无法可靠地使用.
作为一种变体,将例如JSON中的文档存储在单个文档行中会阻止碎片段落的传播,而不会导致大的性能损失吗?
另一种想法是为每个项目分配一个Git存储库; 但后来担心存储和性能,并且必须存储"文档",例如JSON文档或类似文件,以使系统高效工作.然后,您最终会为每个登录的用户管理每个会话的暂存区域,这会很慢 - 对吧?除GitHub外,GitLab等允许快速访问回购历史......
最初将通过Web应用程序访问数据库(或等效的).最终,它可以通过API提供给本地客户端,甚至允许本地客户端使用git repos,如果这是遵循的路径.理想情况下,将使用PHP或NodeJS易于访问的技术.
具体问题 - 如何/应该存储和访问需要配置控制的多个相关人工制品?
将 Trix 编辑器内容与 Livewire 连接在一起时,我遇到了问题。我认为问题在于当 Livewire 从 Trix 接收内容时,内容会被换出并且 Trix 被禁用。有没有更好的办法?
我所做的,有效的,如下。目前,页面被重定向到自身以重新启动 Trix(击败了 Livewire 的全部要点,但它也被用于其他事情)。
<div>
<input
id="newCommentTextTrixContent"
type="hidden"
wire:model="newCommentText"
>
<trix-editor
id="newCommentTextTrixEditor"
input="newCommentTextTrixContent"
></trix-editor>
<button wire:click="addComment(document.getElementById('newCommentTextTrixEditor').innerHTML)">Add Comment</button>
</div>Run Code Online (Sandbox Code Playgroud)
我试过了
我敢肯定像后者这样的东西更好,但是每次都以某种方式重新启动 Trix。这一切似乎有点混乱 - 所以问题是,这样做的正确方法是什么?
在遵循Bulma文档时,您可以input.input使用a 来换行p.control以对其进行样式设置并使其扩展容器的宽度.但是,当容器是一个表单(可能是它)时,控件会缩小到默认大小.我究竟做错了什么?
代码示例如下:
<div class="panel">
<div class="panel-heading">
Login
</div>
<div class="panel-block">
<form>
<p class="control has-icon">
<input class="input is-expanded" type="email" placeholder="E-mail Address" name="email" autofocus>
<span class="icon is-small">
<i class="fa fa-envelope"></i>
</span>
</p>
<p class="control has-icon">
<input class="input is-expanded" type="password" placeholder="Password" name="password">
<span class="icon is-small">
<i class="fa fa-lock"></i>
</span>
</p>
<p class="control">
<button class="button is-success" type="submit">
Login
</button>
</p>
</form>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 使用 Eloquent Events/Observers,是否可以检测更新事件中更新了哪些属性?或者,您能否访问先前/新值以进行比较?
我发现唯一的解决方案是通过检测控制器中已验证请求数据中存在的特定字段来手动触发事件。
我注意到很多JQuery的答案,但我正在使用MooTools ......
我有一个目录使用CSS固定定位,以保持它在左侧,除了20像素.用户将光标悬停在20个像素上,这会触发DIV的鼠标悬停事件,并且ToC完全滑入页面.当光标离开时,ToC滑回原来的位置.
$('frameworkBreakdown').addEvents({
'mouseover': function(event){
event = new Event(event);
$('frameworkBreakdown').tween('left', 20);
event.stop;
},
'mouseout': function(event){
event = new Event(event);
$('frameworkBreakdown').tween('left', (10 - $('frameworkBreakdown').getStyle('width').toInt()) );
event.stop;
}
});
Run Code Online (Sandbox Code Playgroud)
这很好用(除了不相关的问题),除了当我在DIV上移动鼠标时它开始抖动,大概是因为DIV的内容也在触发事件,或者当鼠标跟踪DIV时事件重新开始.
如何阻止此行为发生?是否有标准方法,或者我是否使用某种令人讨厌的全局变量来确定效果是否在起作用,从而忽略该事件?