outenaarwebsolution.com/demo
Ik heb een simpel CRM systeem gemaakt met email functie waar je je kan aanmelden en zo gegevens kan delen zoals een post of adres gegevens etc. Zou je willen kijken of dit goed gemaakt is?
Link naar github = https://github.com/systemthinker/demo
LET OP! Een deel van de code maakt gebruike van PHP BLADE addon (dit verklaard de @, maar is verder gewoon functioneerde code)
Voornamelijk ben ik benieuwd naar waar je je code het beste kan verifieren ofwel bij de controllers ofwel bij de views etc. Bijvoorbeeld: Controller:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public function index()
{
if (Auth::check()) {
$currentUser = Auth::user();
$currentUserId = $currentUser->id;
$users = User::orderBy('name', 'asc')->get();
$auth = true;
if ($userPost = $currentUser->post) {
$userPost = true;
return view('posts.index', compact('users', 'userPost', 'currentUserId', 'auth'));
} else {
$userPost = false;
return view('posts.index', compact('users', 'userPost', 'currentUserId','auth'));
}
} else {
$userPost = false;
$auth = false;
$users = User::orderBy('name', 'asc')->get();
return view('posts.index', compact('users', 'userPost', 'auth'));
}
}
{
if (Auth::check()) {
$currentUser = Auth::user();
$currentUserId = $currentUser->id;
$users = User::orderBy('name', 'asc')->get();
$auth = true;
if ($userPost = $currentUser->post) {
$userPost = true;
return view('posts.index', compact('users', 'userPost', 'currentUserId', 'auth'));
} else {
$userPost = false;
return view('posts.index', compact('users', 'userPost', 'currentUserId','auth'));
}
} else {
$userPost = false;
$auth = false;
$users = User::orderBy('name', 'asc')->get();
return view('posts.index', compact('users', 'userPost', 'auth'));
}
}
View:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@foreach($users as $user)
<div class="row">
@if(empty($user->post->path)) <div class="col-sm-1"></div>
@else <div class="col-sm-1"><img style = "padding: 0; max-height:50px; max-width:50px;" src="{{$user->post->path}}"></div> @endif
@if($user->post == null)<div style="padding-top: 10px;" class="col-sm-4"><h5>{{$user->name}}</h5></div>
@else <div style="padding-top: 10px;" class="col-sm-4"><h5><a style="text-decoration: none;" href="{{route('posts.show',$user->id)}}">{{$user->name}}</a></h5></div> @endif
@if($user->post == null) <div style="padding-top: 10px;" class="col-sm-4"><h5>{{$user->email}}</h5></div>
@else <div style="padding-top: 10px;" class="col-sm-4"><h5><a style="text-decoration: none;" href="{{route('posts.show',$user->id)}}">{{$user->email}}</a></h5></div> @endif
<hr>
</div>
<br>
@endforeach
@if($userPost) <a style="text-decoration: none;" href="{{route('posts.edit',$currentUserId)}}"><btn class="btn btn-success btn-block btn-lg">Wijzig je gegevens</btn></a>
@elseif($userPost == false && $auth == true) <a style="text-decoration: none;" href="{{route('posts.create')}}"><btn class="btn btn-success btn-block btn-lg">start hier</btn></a>
@elseif($userPost == false && $auth == false) <a style="text-decoration: none;" href="{{route('login')}}"><btn class="btn btn-success btn-block btn-lg">maak account aan of login</btn></a> @endif
<div class="row">
@if(empty($user->post->path)) <div class="col-sm-1"></div>
@else <div class="col-sm-1"><img style = "padding: 0; max-height:50px; max-width:50px;" src="{{$user->post->path}}"></div> @endif
@if($user->post == null)<div style="padding-top: 10px;" class="col-sm-4"><h5>{{$user->name}}</h5></div>
@else <div style="padding-top: 10px;" class="col-sm-4"><h5><a style="text-decoration: none;" href="{{route('posts.show',$user->id)}}">{{$user->name}}</a></h5></div> @endif
@if($user->post == null) <div style="padding-top: 10px;" class="col-sm-4"><h5>{{$user->email}}</h5></div>
@else <div style="padding-top: 10px;" class="col-sm-4"><h5><a style="text-decoration: none;" href="{{route('posts.show',$user->id)}}">{{$user->email}}</a></h5></div> @endif
<hr>
</div>
<br>
@endforeach
@if($userPost) <a style="text-decoration: none;" href="{{route('posts.edit',$currentUserId)}}"><btn class="btn btn-success btn-block btn-lg">Wijzig je gegevens</btn></a>
@elseif($userPost == false && $auth == true) <a style="text-decoration: none;" href="{{route('posts.create')}}"><btn class="btn btn-success btn-block btn-lg">start hier</btn></a>
@elseif($userPost == false && $auth == false) <a style="text-decoration: none;" href="{{route('login')}}"><btn class="btn btn-success btn-block btn-lg">maak account aan of login</btn></a> @endif
is dit nu een beetje netjes of kan dit een stuk beter?
Groet
Robbert
Gewijzigd op 06/09/2018 15:00:05 door Robbert Outenaar
Verder lijkt mij de apenstaartjes niet in je script te horen, want je wilt immers toch geen foutmeldingen onderdrukken? Of gaat het hier om een speciale herkenning in je templates? In dat geval is het wel verwarrend. Ik heb het nog nooit eerder gezien.
Gewijzigd op 06/09/2018 14:59:05 door - Ariën -
Arien bedankt voor je bliksemsnelle reactie, ik mijn post gewijzigd.
Wat bedoel je met "waar je je code het beste kan verifieren"? Gaat het dan om het controleren van input waarden, het escapen van output, of het opzetten van unit testing?
Quote:
Ik heb je een PM gestuurd.
Wat bedoel je met "waar je je code het beste kan verifieren"? Gaat het dan om het controleren van input waarden, het escapen van output, of het opzetten van unit testing?
Wat bedoel je met "waar je je code het beste kan verifieren"? Gaat het dan om het controleren van input waarden, het escapen van output, of het opzetten van unit testing?
Het ging mij vooral om het controleren van de input waarden. als je bijvoorbeeld kijkt naar de view staan daar wel veel if statements zoals if(empty()) of if($user->post == null) zou daar misschien een mogelijkheid voor zijn om die bij de controller te testen. Of is het gebruikelijk dit hier te doen.
En de tests zijn dan of de waarde van een sql veld empty is ofwel een user een post heeft te ja of te nee. Dit soort dingen ben ik benieuwd naar hoe anderen en mensen in het vak dit doen.
Je hebt inderdaad wel veel "logica" in je template zitten. Zelf (doe-het-zelf framework + template engine) ben ik gewend om alleen nog maar "data" aan de view mee te geven. Het feit dat iemand dan bijvoorbeeld wel of niet bepaalde gegevens in mag zien vertaalt zich dan naar het simpele feit dat die gegevens gewoon wel of niet voorhanden zijn in de data array. Op basis van dat wel/niet aanwezig zijn maak ik dan enkel nog de opmaakafwegingen (geen user-name = het hele bijbehorende stuk opmaak niet tonen).
- Ariën - op 06/09/2018 14:53:14:
Welkom op PHPhulp. Graag wil ik je vragen of je [code] UBB-tags kan gebruiken in je bericht. Dan is je code hier een stuk makkelijker leesbaarder voor iedereen.
Verder lijkt mij de apenstaartjes niet in je script te horen, want je wilt immers toch geen foutmeldingen onderdrukken? Of gaat het hier om een speciale herkenning in je templates? In dat geval is het wel verwarrend. Ik heb het nog nooit eerder gezien.
Verder lijkt mij de apenstaartjes niet in je script te horen, want je wilt immers toch geen foutmeldingen onderdrukken? Of gaat het hier om een speciale herkenning in je templates? In dat geval is het wel verwarrend. Ik heb het nog nooit eerder gezien.
De website maakt gebruikt van het Laravel framework, die gebruikt Blade als template engine.
Bron: https://laravel.com/docs/5.7/blade
Gewijzigd op 07/09/2018 23:47:54 door Marthijn Buijs
wrapt if/else om een boolean waarde om vervolgens true/false te returnen... dit is een grote omweg, kan direct de boolean var returnen.
Gaat om deze code:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
if ($userPost = $currentUser->post) {
$userPost = true;
return view('posts.index', compact('users', 'userPost', 'currentUserId', 'auth'));
} else {
$userPost = false;
return view('posts.index', compact('users', 'userPost', 'currentUserId','auth'));
$userPost = true;
return view('posts.index', compact('users', 'userPost', 'currentUserId', 'auth'));
} else {
$userPost = false;
return view('posts.index', compact('users', 'userPost', 'currentUserId','auth'));
Mijn vraag is nu, hoe kan je nu direct een boolean var returnen?
top bedankt Rob dit helpt mij echt enorm veel!